为了账号安全,请及时绑定邮箱和手机立即绑定

使用Gson将JSON数组解析为java.util.List

使用Gson将JSON数组解析为java.util.List

慕娘9325324 2019-10-25 14:55:04
我有一个JsonObject名为"mapping"包含以下内容:{    "client": "127.0.0.1",    "servers": [        "8.8.8.8",        "8.8.4.4",        "156.154.70.1",        "156.154.71.1"    ]}我知道我可以用以下方法获得阵列"servers":mapping.get("servers").getAsJsonArray()现在我想将其解析JsonArray为java.util.List...最简单的方法是什么?
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

下面的代码正在使用com.google.gson.JsonArray。我已经打印了列表中的元素数量以及列表中的元素


import java.util.ArrayList;


import com.google.gson.Gson;

import com.google.gson.JsonArray;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;



public class Test {


    static String str = "{ "+ 

            "\"client\":\"127.0.0.1\"," + 

            "\"servers\":[" + 

            "    \"8.8.8.8\"," + 

            "    \"8.8.4.4\"," + 

            "    \"156.154.70.1\"," + 

            "    \"156.154.71.1\" " + 

            "    ]" + 

            "}";


    public static void main(String[] args) {

        // TODO Auto-generated method stub

        try {


            JsonParser jsonParser = new JsonParser();

            JsonObject jo = (JsonObject)jsonParser.parse(str);

            JsonArray jsonArr = jo.getAsJsonArray("servers");

            //jsonArr.

            Gson googleJson = new Gson();

            ArrayList jsonObjList = googleJson.fromJson(jsonArr, ArrayList.class);

            System.out.println("List size is : "+jsonObjList.size());

                    System.out.println("List Elements are  : "+jsonObjList.toString());



        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }


}

输出值


List size is : 4


List Elements are  : [8.8.8.8, 8.8.4.4, 156.154.70.1, 156.154.71.1]


查看完整回答
反对 回复 2019-10-25
?
白衣非少年

TA贡献1155条经验 获得超0个赞

我在这里从Gson的官方网站阅读解决方案


并为您提供以下代码:


    String json = "{"client":"127.0.0.1","servers":["8.8.8.8","8.8.4.4","156.154.70.1","156.154.71.1"]}";


    JsonObject jsonObject = new Gson().fromJson(json, JsonObject.class);

    JsonArray jsonArray = jsonObject.getAsJsonArray("servers");


    String[] arrName = new Gson().fromJson(jsonArray, String[].class);


    List<String> lstName = new ArrayList<>();

    lstName = Arrays.asList(arrName);


    for (String str : lstName) {

        System.out.println(str);

    }    

结果显示在监视器上:


8.8.8.8

8.8.4.4

156.154.70.1

156.154.71.1


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 1374 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信