java - 在 Java 中将一个 JSON 对象转换为另一个 JSON 对象

标签 java json

Java 类 JSONObject:

我有一个 JSON 对象,我只想从中提取一些键/值对到另一个 JSON 对象中。另外,我想更改提取的键的名称。最后,我想让输出对象“平坦”(即深度为 1 的所有元素)。

例如:

输入对象:

{
    "a":"val_a",
    "b":
    {
        "b1":"val_b1",
        "b2":"val_b2"
    },
    "c":
    {
        "c1":"val_c1",
        "c2":
        {
            "c21":"val_c21",
            "c22":"val_c22"
        }
    }
}

输出对象:

{
    "x":"val_a",
    "y":"val_b1",
    "z":"val_c22"
}

实现此目的的最佳(“最干净”)方法是什么?

目前,我正在“手动”一一提取字段,如下所示(对于上面的示例):

JSONObject output = new JSONObject();
output.put("x",input.getString("a"));
output.put("y",input.getJSONObject("b").getString("b1"));
output.put("z",input.getJSONObject("c").getJSONObject("c2").getString("c22"));

是否有某种“正则表达式”可以帮助我“一次性”实现这一目标?

非常感谢对给定示例的回答。

谢谢

最佳答案

一种替代方法是使用 JSON in Java框架将您的 JSON 对象转换为 Java,执行操作并生成新的 JSON 对象。

编辑:抱歉造成误解。

您确实应该选择一个框架,例如@Alessio 推荐的框架。虽然这应该可以通过使用正则表达式来完成,但我个人建议反对它,因为您正在寻找的嵌套和/或对象发生了变化可以给正则表达式本身带来很大的改变。因此,虽然正则表达式可以更快地完成工作,但它可能不那么可读和可维护。

关于java - 在 Java 中将一个 JSON 对象转换为另一个 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21425781/

相关文章:

java - Thymeleaf - 访问嵌套对象属性

java - Android:存储用户点击的CardView

javascript - 在javascript中将json字符串转换为xml字符串

java - 使用键名包含句点 (.) 的 gson 解析 JSON

java - Java困惑: boolean assignment fails in Thread

java - 使用泛型会导致未经检查的转换警告

json - 类似 curl 的 Golang JSON/HTTP 请求

c# - C#解析复杂的Json数组

c# - .Net Core 2.0 替代 HttpResponseBase

java - 优化 Primehunter 的运行时间