见另一篇博文如何准备好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成功