第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何將 LinkedHashMap<String, List<Node>> 轉(zhuǎn)換為

如何將 LinkedHashMap<String, List<Node>> 轉(zhuǎn)換為

大話西游666 2022-10-26 15:57:11
我是 JSONObject 的新手,我正在嘗試將LinkedHashMap<String, List<Node>>轉(zhuǎn)換為 json 文件。地圖的結(jié)構(gòu)是這樣的:"element_one", {Node1, Node2, etc...}"element_two", {Node1, Node2, etc...}每個(gè)節(jié)點(diǎn)都有兩個(gè)屬性:值和標(biāo)簽。我想要的是這樣的:{"element_one": [{"items": [  {    "value": "1",    "label": "Donald"  },  {    "value": "2",    "label": "Goofy"  }]}],"element_two": [{"items": [  {    "value": "1",    "label": "Peter"  },  {    "value": "2",    "label": "Wendy"  }]}}我正在使用 JSONObject,我在不同的線程中尋找解決方案,但沒有任何幫助。我知道這是一個(gè)特殊的問題,但我需要用這個(gè)數(shù)據(jù)結(jié)構(gòu)得到這個(gè)結(jié)果。難點(diǎn)是在地圖內(nèi)循環(huán)節(jié)點(diǎn)元素而不覆蓋已插入 JSONObject 中的元素。
查看完整描述

3 回答

?
絕地?zé)o雙

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();


查看完整回答
反對 回復(fù) 2022-10-26
?
千巷貓影

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

                    )

            );


查看完整回答
反對 回復(fù) 2022-10-26
?
Qyouu

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>


查看完整回答
反對 回復(fù) 2022-10-26
  • 3 回答
  • 0 關(guān)注
  • 187 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)