一尘不染

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

json

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

最简单的方法是什么?


阅读 254

收藏
2020-07-27

共1个答案

一尘不染

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

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

在您的情况下,您只需要获取的TypeList<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

您可能需要看一下Gson API文档

2020-07-27