3 回答

TA貢獻1877條經驗 獲得超6個贊
您可以使用任何一種最流行的 JSON 庫來實現這一目標,以下示例演示了如何將多個 JSON 字符串合并為一個Jackson。
我使用Map<String, Object>(如jsonMap)作為合并的 JSON 字符串。如果所有給定 JSON 字符串中的鍵都相同,則jsonMap中的值將為String。否則,其值為List<String>。
示例代碼
List<String> jsonStrList = Arrays.asList("{\"a\":\"test1\",\"b\":\"test2\"}","{\"b\":\"test3\",\"c\":\"test4\"}");
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> jsonMap = new HashMap<>();
for (String jsonStr : jsonStrList) {
Map<String, String> jsonContent = mapper.readValue(jsonStr, Map.class);
jsonContent.forEach((k,v) -> {
if (jsonMap.containsKey(k)) {
if (jsonMap.get(k) instanceof String) {
List<String> content = new ArrayList<>();
content.add(jsonMap.get(k).toString());
content.add(v);
jsonMap.put(k, content);
} else {
jsonMap.put(k, ((ArrayList) jsonMap.get(k)).add(v));
}
} else {
jsonMap.put(k, v);
}
});
}
System.out.println(jsonMap.toString());
System.out.println(new ObjectMapper().writeValueAsString(jsonMap).toString());
控制臺輸出
{a=test1, b=[test2], c=test4}
{"a":"test1","b":["test2","test3"],"c":"test4"}

TA貢獻1786條經驗 獲得超11個贊
您需要一個 API 或框架來在 java 中解析 JSON。然后,您必須迭代 JSON 字符串,將它們解析為鍵值對。一旦你有了它,我建議使用 Map 來按鍵存儲它們。這是一些偽代碼:
public class KeyValuePair {
private String key = null;
private String value = null;
// todo create constructor with arguments
// todo create getters and setters
}
private List<KeyValuePair> parseJSON(String json) {
List<KeyValuePair> parsed = new ArrayList<>();
// todo use the JSON API you chose to parse the json string into an ArrayList of KeyValuePair
return parsed;
}
Map<String, List<String>> results = new HashMap<>();
List<String> jsonStrings = new ArrayList<>();
// todo read your JSON strings into jsonStrings
for (String jsonString : jsonStrings) {
List<KeyValuePair> pairs = parseJSON(jsonString);
for (KeyValuePair pair : pairs) {
List<String> values = results.get(pair.getKey());
if (values == null) {
values = new ArrayList<>();
results.put(pair.getKey(), values);
}
values.add(pair.getValue());
}
}
// todo you'll have to loop through the map's keys and construct your result JSON

TA貢獻2019條經驗 獲得超9個贊
您可以使用JSONObject 類來執行您需要的操作。據我了解,您目前有一些字符串。您可以使用構造函數為每個字符串創建一個 JSONObject:
JSONObject?jObject?=?new?JSONObject(String?str);
然后,您可以迭代 JSONObject,執行所有檢查并在新 JSONObject 中構造新 JSON。您有一些非常好的方法對您非常有幫助,但我認為 get 和 put 方法足以實現此合并。
添加回答
舉報