猿问

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

我有一个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...


最简单的方法是什么?


慕娘9325324
浏览 1382回答 3
3回答

侃侃无极

下面的代码正在使用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 : 4List Elements are  : [8.8.8.8, 8.8.4.4, 156.154.70.1, 156.154.71.1]

白衣非少年

我在这里从Gson的官方网站阅读解决方案并为您提供以下代码:&nbsp; &nbsp; String json = "{"client":"127.0.0.1","servers":["8.8.8.8","8.8.4.4","156.154.70.1","156.154.71.1"]}";&nbsp; &nbsp; JsonObject jsonObject = new Gson().fromJson(json, JsonObject.class);&nbsp; &nbsp; JsonArray jsonArray = jsonObject.getAsJsonArray("servers");&nbsp; &nbsp; String[] arrName = new Gson().fromJson(jsonArray, String[].class);&nbsp; &nbsp; List<String> lstName = new ArrayList<>();&nbsp; &nbsp; lstName = Arrays.asList(arrName);&nbsp; &nbsp; for (String str : lstName) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(str);&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;结果显示在监视器上:8.8.8.88.8.4.4156.154.70.1156.154.71.1
随时随地看视频慕课网APP

相关分类

Java
我要回答