位置:主页 > IT技术问答 >

Gson解析List的一点小问题,Gson解析List问题

作者:环亚时间:2019-02-06

Gson解析List的一点小问题,Gson解析List问题

        这阵子在使用ag平台官网gson解析时遇到了点小麻烦,因为一直用的fastjson,最近一个项目里使用的gson,需要解析list集合,查资料都是使用TypeToken解决,相对比较麻烦,下面为大伙推荐一种简便的方法。
<Object> Object com.google.gson.Gson.fromJson(String json, Class<Object> classOfT) throws JsonSyntaxException 可以方便地帮我们把Json字符串转换成对应类型的对象。这里提供一个简单的例子,帮助大家理解。
Json字符串
{response: "success", demoList: [{id: "1", name: "jack", age: "21"},{id: "2", name: "joke", age: "22"},{id: "3", name: "pink", age: "23"}]}
Demo.java
public class Demo {      private String id;      private String name;      private int age; }
       如果要解析出来Demo的List,我们该怎么做呢?一般朋友查到网上的资料都是使用TypeToken的方法。
T com.google.gson.Gson.fromJson(String json, Class<T> classOfT) throws JsonSyntaxException
这个方法用起稍微有那么一点复杂,不过对于这个例子还不是很复杂,既然还是复杂,那就不讨论它了,这不是这儿的重点。
       重点说说后面的方法:Gson.fromJson(String json, Class<Object> classOfT),因为我们需要Demo的集合,所以就封装一个DemoList类,用这个类接收fromJson()返回的结果,如下:
DemoList.java
public class DemoList {
     private List<Demo> demoList;
     public List<Demo> getDemoList() {
         return demoList;
 }

     public void setDemoList(List<Demo> demoList) {
        this.demoList = demoList;
     }
}
       接下来,在解析时候就可以一行代码搞定整个Json的反序列化操作,这时候才真正看到了Gson的强大之处,但值得注意的就是DemoList中红色的成员变量,它的名字应该是和Json字符串中集合的键是对应的,我就是因为不知道这点让我饱经磨难。
List<DemoList> list = new Gson().fromJson(json,DemoList.class);
       是不是相当简单,不用fastJson一样,一级一级剥开了再处理,还要处理异常,但是个人还是感觉fastJson比较容易理解些,反正各有长短吧,以上纯属个人见解,大家习惯用谁谁,只希望能帮到遇到和我一样情况的朋友们。


对于google gson,字符串转换对象的,首先对象的属性有对象型list,其次本身就是一个对象型list

class MyObject1{
private String key;
private List<MyObject2> value;
.............get/set
}

class MyObject2{
private String key;
private String value;
.............get/set
}

Gson gson = gsonb.create();
MyObject1 myObject1= gson.fromJson(jsonStr, MyObject1.class);

另,去掉引号直接得到
{"key":"2","value":[{"key":"name","value":"sa3"},{"key":"age","value":"33"}]}
 
问这个Json数据怎使用谷歌的Gson来解析,我解析了一上午都没搞定,希望帮忙,急用感谢

Gson 要求先定义一个对应的java 类。你如何定义的。

import com.google.gson.*;import com.google.gson.reflect.*;import java.util.*;public class GsonToObject{ public static void main(String args[])throws Exception{ new GsonToObject().test(); } public void test()throws Exception{ String str="{\"face\":[{\"position\":{\"mouth_right\":{\"y\": 46.099487,\"x\": 25.857667},\"mouth_left\":{\"y\": 45.579487,\"x\": 21.151333},\"height\": 16.410256,\"width\": 10.666667},\"attribute\": {\"race\": {\"value\": \"Asian\",\"confidence\": 99.71640000000001},\"smiling\": {\"value\": 95.1095}},\"face_id\": \"122\"}],\"response_code\": 200}"; Gson gson = new GsonBuilder() .create(); Type type = new TypeToken<Response>(){}.getType(); Response res = (Response)gson.fromJson(str, type); System.out.println(res); } class Point{ private double x, y; public Point(){} public Point(double x, double y){this.x=x; this.y=y;} public double getX(){return this.x;} public void setX(double x){this.x=x;} public double getY(){r......余下全文>>
 

http://www.bkjia.com/Androidjc/892500.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/892500.htmlTechArticleGson解析List的一点小问题,Gson解析List问题 这阵子在使用gson解析时遇到了点小麻烦,因为一直用的fastjson,最近一个项目里使用的gson,需要...

本文源自: AG环亚游戏

IT技术问答

联系我们