请问这个json数据用Gson怎么解析?急!

yong_815 2012-04-17 08:35:52
首先问下我写的的这种json数据格式对吗?其次怎么解析呢?要求用Gson解析。

{

"status":"success",

"data":{

[{"id":1000,"name":"zhangsan","phones":["15611111111","15622222222"]},

{"id":1001,"name":"lisi","phones":["15611111111","15622222222"]},

{"id":1002,"name":"wangwu","phones":["15611111111","15622222222"]}

]

}

}

data中是若干User对象.

public class User {

private int id;

private String name;

private List<String> phones;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public List<String> getPhones() {

return phones;

}

public void setPhones(List<String> phones) {

this.phones = phones;

}

}

其中电话也可以是多个。
...全文
863 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
auyzyh11 2013-10-29
  • 打赏
  • 举报
回复
貌似 json格式有问题 !!!
程序猿老王 2013-07-23
  • 打赏
  • 举报
回复
好像很好解析吧
yong_815 2012-07-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

兄弟,有没有招了?我也在想办法呀。:(
[/Quote]
木有,搞了半天没弄出来,最后改用org.json包中的工具内解析的。也挺简单的。兄弟研究出来了麻烦告知我下下。
hvk687 2012-07-19
  • 打赏
  • 举报
回复
jsonobject,jsonarray,嵌套而已,{}是jsonobject,[]是jsonarray,根据key一点一点往外解就是了
  • 打赏
  • 举报
回复
我也不明白你这样复杂的json用gson怎么解析?楼主搞定了没?求指教啊
NOKtec 2012-05-25
  • 打赏
  • 举报
回复
兄弟,有没有招了?我也在想办法呀。:(
qdkfriend 2012-04-18
  • 打赏
  • 举报
回复
想知道你的json是否正确 可以在这里验证
http://www.bejson.com/go.html?u=http://www.bejson.com/index.php

经过我的验证发现 你这个不是标准的json格式
你的修改为
{
"status": "success",
"data": [
{
"id": 1000,
"name": "zhangsan",
"phones": [
"15611111111",
"15622222222"
]
},
{
"id": 1001,
"name": "lisi",
"phones": [
"15611111111",
"15622222222"
]
},
{
"id": 1002,
"name": "wangwu",
"phones": [
"15611111111",
"15622222222"
]
}
]
}

http://www.json.org/ 有一些json的语法格式
把date的对象符号{}去掉,如果是对象,你则需要给一个key

至于解析,安装你的格式一个一个来,是对象就用对象的函数,是数组就用数组的函数。

yong_815 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
就是一些map啊,一层一层的扒皮就是了。
[/Quote]
gson封装好了解析对象和数组的方法,感觉非常方便。但是我上面的json是一个稍微复杂点的对象,有对象,又有数组,还有嵌套。想用gson解析对象和解析数组的方法的组合来解决。请问怎么实现呢?我知道gson中有个JsonReader可以解析,只是感觉好麻烦!
summersrest 2012-04-18
  • 打赏
  • 举报
回复
就是一些map啊,一层一层的扒皮就是了。
yong_815 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
想知道你的json是否正确 可以在这里验证
http://www.bejson.com/go.html?u=http://www.bejson.com/index.php

经过我的验证发现 你这个不是标准的json格式
你的修改为
{
"status": "success",
"data": [
{
"id": 1000,
"name": "zhangs……
[/Quote]
非常感谢你的回答!恕俺愚昧,俺还想请教下:如果是用org.json包,完全能搞定,如用gson,我能解析出对象,也能解析出数组。但我想用这2种方法的组合解析上面的例子死活解析不来。如果用gson的JsonReader的beginX,endX方式我也能搞定。只是觉得很笨···尤其是号码里面又有多个号码,脑袋始终没有转过这个弯,还望大侠不要见笑!下面是我的方法:

public class ResultInfo{
private String status;
private String data;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
public class JsonParser {
public static ResultInfo parseResultInfo(String jsonData) {
ResultInfo info = null;
if (jsonData != null) {
Gson gson = new Gson();
info = gson.fromJson(jsonData, ResultInfo.class);
}
return info;
}
public static List<User> parseUser(String jsonData) {
ResultInfo info = parseResultInfo(jsonData);
if(info.getStatus().equals("success")){
Type listType = new TypeToken<List<User>>() {}.getType();
Gson gson = new Gson();
List<User> list = gson.fromJson(info.getData(), listType);
return list;
}
return null;
}
}



80,476

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧