解析嵌套json字符串,一个json字符串中嵌套另一个json字符串

我现在有一个字符串是这样:

{
     "msg": {
     "resCode": "0000",
     "attrName": "sensorData",

   "result": {   "food1": 0,   "water": 0,   "food2": 106,   "humidity": "152.42",   "temprature": "103.65" } } }

我要获取的是嵌套在msg里的result中的所有数据。

 

先用msg和result分别创建bean类,把Result作为msg的其中一个变量

 1 public class SensorBean implements Serializable {
 2 
 3    private Result result;
 4 
 5     private int resCode;
 6 
 7     private String attrName;10 
11     public Result getResult() {
12         return result;
13     }
14 
15     public void setResult(Result result) {
16         this.result = result;
17     }
18 
19     public int getResCode() {
20         return resCode;
21     }
22 
23     public void setResCode(int resCode) {
24         this.resCode = resCode;
25     }
26 
27     public String getAttrName() {
28         return attrName;
29     }
30 
31     public void setAttrName(String attrName) {
32         this.attrName = attrName;
33     }42 
43     @Override
44     public String toString() {
45         return "Msg{" +
46                 "result=" + result.toString() +
47                 ", resCode=" + resCode +
48                 ", attrName='" + attrName + '\'' +
50                 '}';
51     }
52 
53 }

两个类都继承序列化

 1 public class Result implements Serializable{
 2 
 3     /**
 4      * food1 : 0
 5      * water : 0
 6      * food2 : 106
 7      * humidity : 152.42
 8      * temprature : 103.65
 9      */
10 
11     private int food1;
12     private int water;
13     private int food2;
14     private String humidity;
15     private String temprature;
16 
17     public int getFood1() {
18         return food1;
19     }
20 
21     public void setFood1(int food1) {
22         this.food1 = food1;
23     }
24 
25     public int getWater() {
26         return water;
27     }
28 
29     public void setWater(int water) {
30         this.water = water;
31     }
32 
49     public String getTemprature() {
50         return temprature;
51     }
52 
53     public void setTemprature(String temprature) {
54         this.temprature = temprature;
55     }
56 
57     @Override
58     public String toString() {
59         return "Result{" +
60                 "food1=" + food1 +
62                 ", water='" + water +
63                 ", temprature=" + temprature+ '\''+
64                 '}';
65     }
66 }

然后在获取到数据的地方进行Gson解析

Gson gson = new Gson();
SensorBean sensorBean = gson.fromJson(data.getString("msg"), SensorBean.class);
Result result = sensorBean.getResult();
L.d(TAG, "result.bean = " + result.toString());

这种方法应该是比较费事儿的,不过,没毛病

posted @ 2016-12-19 18:17  Sharley  阅读(23194)  评论(0编辑  收藏  举报