亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

將 JSON 解析為對象

將 JSON 解析為對象

慕田峪9158850 2022-06-30 17:36:44
我有一個User類定義為:User.javapackage model;import java.util.List;import java.util.Map;public class User {    private final Map<String, List<String>> accountTransactionsMap;    public User(final Map<String, List<String>> accountTransactionsMap) {        this.accountTransactionsMap = accountTransactionsMap;    }    public Map<String, List<String>> getAccountTransactionsMap() {        return accountTransactionsMap;    }}我正在調用返回以下響應的 REST API:{     "username1":{        "456":[        ],      "123":[        ],      "789":[        ]   },   "username2":{        "123":[        ],      "456":[        ],      "789":[        ]   },   "username3":{        "789":[        ],      "123":[        ],      "456":[           "transaction10",         "transaction6",         "transaction9",         "transaction3"      ]   }}我希望能夠解析響應并將其存儲在User對象中。我嘗試了以下方法:Test.javapublic class Test {    public static void main(final String[] args) {        final String response = "{\"username1\":{\"456\":[],\"123\":[],\"789\":[]},\"username2\":{\"123\":[],\"456\":[],\"789\":[]},\"username3\":{\"789\":[],\"123\":[],\"456\":[\"transaction10\",\"transaction6\",\"transaction9\",\"transaction3\"]}}";        final Gson gson = new Gson();        final Type map = new TypeToken<Map<String, User>>(){}.getType();        final Map<String, User> result = gson.fromJson(response, map);        System.out.println(result);        if (result != null) {            for (final Map.Entry<String, User> entry : result.entrySet()) {                System.out.println("username: " + entry.getKey());                final User user = entry.getValue();                System.out.println("transactions: " + user.getAccountTransactionsMap());            }        }    }}這會產生輸出:{username1=model.User@80ec1f8, username2=model.User@1445d7f, username3=model.User@6a396c1e}username: username1transactions: nullusername: username2transactions: nullusername: username3transactions: null
查看完整描述

1 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

User你需要使用而不是類Map<String, Map<String, List<String>>>:


import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;


import java.io.File;

import java.io.FileReader;

import java.lang.reflect.Type;

import java.util.List;

import java.util.Map;


public class GsonApp {


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

        File jsonFile = new File("./resource/test.json").getAbsoluteFile();


        final Gson gson = new Gson();

        final Type map = new TypeToken<Map<String, Map<String, List<String>>>>(){}.getType();

        final Map<String, Map<String, List<String>>> result = gson.fromJson(new FileReader(jsonFile), map);

        System.out.println(result);


        if (result != null) {

            for (final Map.Entry<String, Map<String, List<String>>> entry : result.entrySet()) {

                System.out.println("username: " + entry.getKey());

                final Map<String, List<String>> user = entry.getValue();

                System.out.println("transactions: " + user);

            }

        }

    }

}

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


{username1={456=[], 123=[], 789=[]}, username2={123=[], 456=[], 789=[]}, username3={789=[], 123=[], 456=[transaction10, transaction6, transaction9, transaction3]}}

username: username1

transactions: {456=[], 123=[], 789=[]}

username: username2

transactions: {123=[], 456=[], 789=[]}

username: username3

transactions: {789=[], 123=[], 456=[transaction10, transaction6, transaction9, transaction3]}

如果你真的需要,你可以User在解析后創建對象。


查看完整回答
反對 回復 2022-06-30
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號