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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 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ù)加載到字符串中。如何制作一個 HashMap,其中我的鍵是“map”字段,而我的值是“values”字段數(shù)組?我在其他類似問題中嘗試了很多解決方案,但沒有任何效果。這是我的代碼的開頭:    ObjectMapper mapper = new ObjectMapper();    mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);但我不知道如何將它分配給 Map,readValue 方法似乎沒有給出正確的東西
查看完整描述

3 回答

?
溫溫醬

TA貢獻1752條經(jīng)驗 獲得超4個贊

您可以將其反序列化為List<Map<String, Object>>,然后轉換為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]}



查看完整回答
反對 回復 2024-01-05
?
元芳怎么了

TA貢獻1798條經(jīng)驗 獲得超7個贊

你可以這樣做:


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

}

結果


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



查看完整回答
反對 回復 2024-01-05
?
寶慕林4294392

TA貢獻2021條經(jīng)驗 獲得超8個贊

您可以List<Map<Object,Object>>將此 json 用作 3 個對象的列表,因此它不能直接轉換為 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);


查看完整回答
反對 回復 2024-01-05
  • 3 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號