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

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

將 JSON 字符串映射到 HashMap

將 JSON 字符串映射到 HashMap

Helenr 2024-01-05 16:34:57
考慮以下 JSON:[  {    "map": "TEST",    "values": [      "test",      "test2"    ]  },  {    "map": "TEST1",    "values": [      "test",      "test3",      "test4"    ]  },  {    "map": "TEST2",    "values": [      "test4",      "test2",      "test5",      "test2"    ]  }]它們已被 getResourceAsString 函數(shù)加載到字符串中。如何制作一個(gè) HashMap,其中我的鍵是“map”字段,而我的值是“values”字段數(shù)組?我在其他類似問題中嘗試了很多解決方案,但沒有任何效果。這是我的代碼的開頭:    ObjectMapper mapper = new ObjectMapper();    mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);但我不知道如何將它分配給 Map,readValue 方法似乎沒有給出正確的東西
查看完整描述

3 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以將其反序列化為List<Map<String, Object>>,然后轉(zhuǎn)換為Map:


import com.fasterxml.jackson.core.type.TypeReference;

import com.fasterxml.jackson.databind.ObjectMapper;


import java.io.File;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


public class JsonApp {


    public static void main(String[] args) throws Exception {

        File jsonFile = new File("./src/main/resources/test.json");


        ObjectMapper mapper = new ObjectMapper();


        TypeReference rootType = new TypeReference<List<Map<String, Object>>>() { };

        List<Map<String, Object>> root = mapper.readValue(jsonFile, rootType);

        Map<String, Object> result = root.stream()

                 .collect(Collectors.toMap(

                         m -> m.get("map").toString(),

                         m -> m.get("values")));

        System.out.println(result);

    }

}

上面的代碼打?。?/p>


{TEST2=[test4, test2, test5, test2], TEST=[test, test2], TEST1=[test, test3, test4]}



查看完整回答
反對(duì) 回復(fù) 2024-01-05
?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊

你可以這樣做:


ArrayNode rootNode = (ArrayNode) new ObjectMapper().readTree(...);

Map<String, List<String>> map = new LinkedHashMap<>();

for (int i = 0; i < rootNode.size(); i++) {

    JsonNode objNode = rootNode.get(i);

    String name = objNode.get("map").textValue();

    ArrayNode valuesNode = (ArrayNode) objNode.get("values");

    List<String> values = new ArrayList<>(valuesNode.size());

    for (int j = 0; j < valuesNode.size(); j++)

        values.add(valuesNode.get(j).textValue());

    map.put(name, values);

}

結(jié)果


{TEST=[test, test2], TEST1=[test, test3, test4], TEST2=[test4, test2, test5, test2]}



查看完整回答
反對(duì) 回復(fù) 2024-01-05
?
寶慕林4294392

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以List<Map<Object,Object>>將此 json 用作 3 個(gè)對(duì)象的列表,因此它不能直接轉(zhuǎn)換為 a HashMap,因此請嘗試以下操作:

String json = "[{\"map\":\"TEST\",\"values\":[\"test\",\"test2\"]},{\"map\":\"TEST1\",\"values\":[\"test\",\"test3\",\"test4\"]},{\"map\":\"TEST2\",\"values\":[\"test4\",\"test2\",\"test5\",\"test2\"]}]";

List<Map<Object, Object>> jsonObj = mapper.readValue(json, List.class);


查看完整回答
反對(duì) 回復(fù) 2024-01-05
  • 3 回答
  • 0 關(guān)注
  • 250 瀏覽

添加回答

舉報(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)