如何从另一个主Json配置文件生成Json

时间:2019-10-16 13:14:42

标签: java json

我有一个主JSON文件,其中包含配置文本作为模板。像下面这样。

{
    "first": "This is the first line",
    "second": "This is the second line",
    "third": "This is the third line",
    "fourth": "This is the fourth line"
}

我想根据一些规则从上面的母版生成另一个JSON文件。例如,请参见下面的代码段了解我的要求

{
    "first": "This is the first custom line",
    "second": [I want this populated from master.second and master.fourth],
    "third": [I want this populated from master.third],
    "fifth": "This is the local fifth section"
}

正在寻找有关最佳方法的建议。通常,我希望能够配置大量复杂文件。

我的应用程序是基于Java的,因此,使用JSON,Java或任何其他兼容工具的任何建议将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:1)

虽然这些json看起来很相似,但它们无法映射到相同的Java对象,secondsthird字段的类型不同

所以根据您的假设,我认为最简单的方法是创建两个类,例如

class MasterJsonObject {
    private String first;
    private String second;
    private String third;
    private String fourth;
}

class GeneratedJsonObject {
    private String first;
    private List<String> second;
    private List<String> third;
    private String fourth;
}

读取json并将其映射到MasterJsonObject,像这样创建GeneratedJsonObject

GeneratedJsonObject generatedJsonObject = new GeneratedJsonObject();
generatedJsonObject.setFirst(masterJsonObject.getFirst());
generatedJsonObject.setSecond(Arrays.asList(masterJsonObject.getSecond(), masterJsonObject.getForth()));
...

然后您可以将generatedJsonObject写成json

您可以使用通用方法和其他方法来实现更可靠的行为...

要使用Java读写json,我建议您研究Jackson

如果您只是想连接字符串,例如

,我假设您的代码"second": [I want this populated from master.second and master.fourth],中的意思是list

"second": "This is the second line This is the fourth line"

答案更改为:

  • 不需要第二堂课(generatedJsonObject
  • 使用.setSecond(masterJsonObject.getSecond() + " " + masterJsonObject.getForth());
  • 创建jsonObject