一尘不染

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

java

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

现在我想将其解析JsonArrayjava.util.List

最简单的方法是什么?


阅读 629

收藏
2020-03-21

共1个答案

一尘不染

绝对最简单的方法是使用Gson的默认解析功能fromJson()

此功能的实现适用于需要反序列化为任何ParameterizedType(例如any List)的情况fromJson(JsonElement json, Type typeOfT)

在你的情况下,你只需要获取的Type,List<String>然后将JSON数组解析为that Type,如下所示:

import java.lang.reflect.Type;
import com.google.gson.reflect.TypeToken;

JsonElement yourJson = mapping.get("servers");
Type listType = new TypeToken<List<String>>() {}.getType();

List<String> yourList = new Gson().fromJson(yourJson, listType);

在你的情况下yourJson是a JsonElement,但也可能是a String,any Reader或a JsonReader

2020-03-21