我有一个JsonObject名为"mapping"包含以下内容:
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":
"servers"
mapping.get("servers").getAsJsonArray()
现在我想将其解析JsonArray为java.util.List…
JsonArray
java.util.List
最简单的方法是什么?
绝对最简单的方法是使用Gson的默认解析功能fromJson()。
fromJson()
此功能的实现适用于需要反序列化为任何ParameterizedType(例如any List)的情况fromJson(JsonElement json, Type typeOfT)。
ParameterizedType
fromJson(JsonElement json, Type typeOfT)
在你的情况下,你只需要获取的Type,List<String>然后将JSON数组解析为that Type,如下所示:
List<String>
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。
yourJson
JsonElement
a String,any Reader
JsonReader