3 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
我結(jié)合 JSONArray 和 JSONObject 類解決了它。
我使用循環(huán)為所有節(jié)點(diǎn)創(chuàng)建了主對象:
for (Node node : nodeList){ try { JSONObject obj = new JSONObject(); obj.put("value", node.getValue()); obj.put("label", node.getLabel()); jsonArrayOne.put(obj) } catch (JSONException e) { log.info("JSONException"); }}
然后將 jsonArrayOne 放入一個(gè) jsonObject 中:
jsonObjOne.put("items", jsonArrayOne);
并將這個(gè) jsonObjOne 放入一個(gè) jsonArray 中:
jsonArrayTwo.put(jsonObjOne);
把這個(gè) jsonArrayTwo 放在一個(gè) jsonObject 中:
jsonObjTwo.put(element, jsonArrayTwo);
最后把這個(gè)jsonObjTwo放到j(luò)sonArrayFinal中。
jsonArrayFinal.put(jsonObjTwo);
最后,我將 jsonArrayFinal 轉(zhuǎn)換為字符串:
jsonArrayFinal.toString();

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用stream轉(zhuǎn)換LinkedHashMap為JsonObject:
Node-類(例如):
public class Node {
private final String value;
private final String label;
private Node(String value, String label) {
this.value = value;
this.label = label;
}
//Getters
}
toItems-方法轉(zhuǎn)換值(列表)=> 將節(jié)點(diǎn)映射到構(gòu)建器并使用自定義收集器(Collector.of(...))將它們收集到“項(xiàng)目” JsonObject:
static JsonObject toItems(List<Node> nodes) {
return nodes
.stream()
.map(node ->
Json.createObjectBuilder()
.add("value", node.getValue())
.add("label", node.getLabel())
).collect(
Collector.of(
Json::createArrayBuilder,
JsonArrayBuilder::add,
JsonArrayBuilder::addAll,
jsonArrayBuilder ->
Json.createObjectBuilder()
.add("items", jsonArrayBuilder)
.build()
)
);
}
Stream將Map.Entry<String, List<Node>>每個(gè)轉(zhuǎn)換Entry為JsonObject并收集所有到Root -object:
Map<String, List<Node>> nodes = ...
JsonObject jo = nodes
.entrySet()
.stream()
.map((e) -> Json.createObjectBuilder().add(e.getKey(), toItems(e.getValue()))
).collect(
Collector.of(
Json::createObjectBuilder,
JsonObjectBuilder::addAll,
JsonObjectBuilder::addAll,
JsonObjectBuilder::build
)
);

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
GSON 庫將幫助您將對象轉(zhuǎn)換為 JSON。
Gson gson = new Gson();
String json = gson.toJson(myMap,LinkedHashMap.class);
Maven 依賴
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
添加回答
舉報(bào)