Abe*_*ejo 104 java parsing json gson
我有一个JsonObject名为"mapping"以下内容:
{
"client": "127.0.0.1",
"servers": [
"8.8.8.8",
"8.8.4.4",
"156.154.70.1",
"156.154.71.1"
]
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以得到数组"servers":
mapping.get("servers").getAsJsonArray()
Run Code Online (Sandbox Code Playgroud)
现在我想解析JsonArray成java.util.List...
最简单的方法是什么?
Mik*_*ikO 250
绝对最简单的方法是使用Gson的默认解析功能fromJson().
当你需要反序列化为任何ParameterizedType(例如,任何List)时,这个函数的实现是适合的fromJson(JsonElement json, Type typeOfT).
在您的情况下,您只需要获取Typea List<String>,然后将JSON数组解析为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);
Run Code Online (Sandbox Code Playgroud)
在你的情况下yourJson是a JsonElement,但它也可以是a String,any Reader或a JsonReader.
您可能需要查看Gson API文档.
Pra*_*eek 18
下面的代码正在使用com.google.gson.JsonArray.我已经打印了列表中的元素数量以及List中的元素
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT
List size is : 4
List Elements are : [8.8.8.8, 8.8.4.4, 156.154.70.1, 156.154.71.1]
Run Code Online (Sandbox Code Playgroud)
我在这里从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);
}
Run Code Online (Sandbox Code Playgroud)
结果显示在监视器上:
8.8.8.8
8.8.4.4
156.154.70.1
156.154.71.1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
161103 次 |
| 最近记录: |