使用Gson解析Json字符串(实际项目)

5 篇文章 0 订阅

见另一篇博文如何准备好jar包;

需要转的Json字符串很复杂,多层嵌套;
例如:

{
    "status": {
        "success": true,
        "code": 0
    },
    "datalist": [
        {
            "rank": 1,
            "nickname": "李惠顺",
            "rank_value": 128
        },
        {
            "rank": 2,
            "nickname": "九",
            "rank_value": 125
        },
        {
            "rank": 3,
            "nickname": "shangjinghui",
            "rank_value": 117
        },
        {
            "rank": 4,
            "nickname": "K、k",
            "rank_value": 96
        },
        {
            "rank": 5,
            "nickname": "鼎鼎",
            "rank_value": 78
        },
        {
            "rank": 6,
            "nickname": "张英",
            "rank_value": 66
        },
        {
            "rank": 7,
            "nickname": "静心",
            "rank_value": 59
        },
        {
            "rank": 8,
            "nickname": "孙婷",
            "rank_value": 55
        },
        {
            "rank": 9,
            "nickname": "黄宁",
            "rank_value": 54
        },
        {
            "rank": 10,
            "nickname": "缺爱yin",
            "rank_value": 54
        }
    ],
    "task": {
        "hasFinishedTask": false
    }
}

首先熟悉要使用的Gson的重要类

包com.google.gson
中的JsonParser类
parser中文含义就是解析
其中:
方法:

public JsonElement parse(String json) throws JsonSyntaxException {
    return parse(new StringReader(json));
  }

作用:将String 转为JsonElement类

JsonElement 类, 或者是JsonObject或者是JsonArray(继承关系)

一般是用JsonObject类
将JsonElement转为JsonObject

  public JsonObject getAsJsonObject() 

其中的方法:

public boolean has(String memberName)

作用:判断是否JsonObject中
memberName : member
再使用方法

public JsonObject getAsJsonObject(String memberName)

得到JsonObject,
或者使用:

public JsonArray getAsJsonArray(String memberName)

得到JsonArray

可以继续嵌套;
例子:Json字符串如上

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;


/**
 * 
 * 类
 * 调用类方法public void isSuccess(String url)   传入URL
 * 返回url + get是否成功
 * 
 */
import net.sf.json.JSONObject;



public class FindSuccess {

    private String url;
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }

    //判断是否成功
    public void isSuccess(String url)
    {
        HttpClientGet httpGet = new HttpClientGet();
        httpGet.get(url);
        String jsonString =httpGet.getResult();   
    //    System.out.println("---------------------------------------------");
        //解析Json字符串,使用Gson

        JsonElement element =new   JsonParser().parse(jsonString);

        JsonObject obj = element.getAsJsonObject();

        if ( obj.has("status" ))
        {
            JsonObject obj2 = obj.getAsJsonObject("status")  ;

            if(obj2.has("success"))
            {
                System.out.println("有success项");
                if(obj2.get("success").getAsBoolean() == true)
                {
                    System.out.println(url +"\nget成功");
                }
                else
                {
                    System.out.println(url +"\nget失败");
                }
            }
            else
            {
                System.out.println("无success项");
            }
        }
        else
        {
            System.out.println("没有 status");
        }

        //不完善,其他情况的处理
//        if (obj.has("status"))
//        {  
//          JSONObject obj2 = obj.getJSONObject("status")  ;
//          if(obj2.has("success"))
//          {
//              if(obj2.getBoolean("success") == true)
//              {
//                  System.out.println(url +"\nget成功");
//              }
//              else
//              {
//                  System.out.println(url +"\nget失败");
//              }
//              }            
//        }         
    }


//测试
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String url = "http://xy.skywalker.19where.com/api/ranklist/getRankingListByType?sessionkey=35b2aeec30317477a15302d422e84316&type=4";

        FindSuccess find = new FindSuccess();
        //调用,
        find.isSuccess(url);    

    }

}

输出为

有success项
http://xy.skywalker.19where.com/api/ranklist/getRankingListByType?sessionkey=35b2aeec30317477a15302d422e84316&type=4
get成功
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值