我有一个name.json文件:
[
{"name" : "James",
"Surname" : "Bond"
},
{
"name" : "Abc",
"Surname" : "Xyz"
}]
现在我想在这个现有文件中添加另一个数组:
[
{"name" : "Brad",
"Surname" : "Pitt"
},
{
"name" : "Angelina ",
"Surname" : "Jolie "
}
]
结果如下:
[
{"name" : "James",
"Surname" : "Bond"
},
{
"name" : "Abc",
"Surname" : "Xyz"
},
{"name" : "Brad",
"Surname" : "Pitt"
},
{
"name" : "Angelina ",
"Surname" : "Jolie "
}
]
但我的结果如下:
[
{"name" : "James",
"Surname" : "Bond"
},
{
"name" : "Abc",
"Surname" : "Xyz"
}]
[
{"name" : "Brad",
"Surname" : "Pitt"
},
{
"name" : "Angelina ",
"Surname" : "Jolie "
}
]
如何解决这个问题?
我将数据附加到这样的文件。
void writeJson(JSONArray jsonDataObject){
ObjectMapper mapper = new ObjectMapper();
ObjectWriter writer = mapper.writer(new DefaultPrettyPrinter());
writer.writeValue(new File("/home/cp/name.json"), jsonDataObject);
}
答案 0 :(得分:1)
这里有一个合理的方式:
EDIT;鉴于您对巨量的评论:
那么,我会考虑分发整个处理过程。
除此之外,我还会考虑您的总体要求:
A)为什么你的数据会像这样出现?如果你知道事情应该进入一个 JSON数组;难道你不能改变你的“输入处理”来立即构建那个东西吗?
B)或者反过来 - 你不能改变你的“跟进”过程,以了解数据不是一个,而是在几个JSON数组文件中?
换句话说:您的要求似乎是“所有记录必须在一个JSON数组(文件)中”。你不能把它改为:“记录来自JSON数组(文件);并且有一个列表跟踪所有这些数组文件及其顺序?!
答案 1 :(得分:0)
使用您最喜欢的JSON库(我将在本例中使用json.org):
JSONArray fullJsonArray = new JSONArray();
JSONArray list1 = JSONArray.fromObject(jsonString1);
JSONArray list2 = JSONArray.fromObject(jsonString2);
jsonArray.addAll(list1.toCollection());
jsonArray.addAll(list2.toCollection());
答案 2 :(得分:0)
使用Jackson后,请考虑以下解决方案:
// First JSON
String json1 = "[{\"name\":\"James\",\"Surname\":\"Bond\"},"
+ "{\"name\":\"Abc\",\"Surname\":\"Xyz\"}]";
// Second JSON
String json2 = "[{\"name\":\"Brad\",\"Surname\":\"Pitt\"},"
+ "{\"name\":\"Angelina \",\"Surname\":\"Jolie\"}]";
// Create ObjectMapper instance to manipulate JSON
ObjectMapper mapper = new ObjectMapper();
// Parse the JSON strings into the Jackson tree model
JsonNode tree1 = mapper.readTree(json1);
JsonNode tree2 = mapper.readTree(json2);
// Append the second tree to the first tree
((ArrayNode) tree1).addAll((ArrayNode) tree2);
// Serialize the tree into a string
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(tree1);
它将产生以下结果:
[ {
"name" : "James",
"Surname" : "Bond"
}, {
"name" : "Abc",
"Surname" : "Xyz"
}, {
"name" : "Brad",
"Surname" : "Pitt"
}, {
"name" : "Angelina ",
"Surname" : "Jolie"
} ]