fastjson解析多层嵌套的问题

竹和蕉的缘分 2015-08-06 12:22:07
这个是要解析的json数据
http://tingapi.ting.baidu.com/v1/restserver/ting?from=qianqian&version=2.1.0&method=baidu.ting.song.getInfos&format=json&songid=8059247&ts=1408284347323&e=JoN56kTXnnbEpd9MVczkYJCSx%2FE1mkLx%2BPMIkTcOEu4%3D&nw=2&ucf=1&res=1
我建了一个fall类
package day15Prac;

public class Fall {
private static Fsongurl songurl = new Fsongurl();
private String error_code;
private static Fsonginfo songinfo = new Fsonginfo();

public Fsongurl getSongurl() {
return songurl;
}

public void setSongurl(Fsongurl songurl) {
this.songurl = songurl;
}

public String getError_code() {
return error_code;
}

public void setError_code(String error_code) {
this.error_code = error_code;
}

public Fsonginfo getSonginfo() {
return songinfo;
}

public void setSonginfo(Fsonginfo songinfo) {
Fall.songinfo = songinfo;
}

@Override
public String toString() {
return "Fall [songurl=" + songurl + ", error_code=" + error_code
+ ", songinfo=" + songinfo + "]";
}

}
还有一个fsonginfo类和fsongurl类,fsongurl的类中存放了url类的集合
最后主函数调用fastjson解析的时候只读取出来了第一层数据
String url = "http://tingapi.ting.baidu.com/v1/restserver/ting?from=qianqian&version=2.1.0&method=baidu.ting.song.getInfos&format=json&songid=8059247&ts=1408284347323&e=JoN56kTXnnbEpd9MVczkYJCSx%2FE1mkLx%2BPMIkTcOEu4%3D&nw=2&ucf=1&res=1 ";
NUtils.get(url, new Callback() {

@Override
public void response(String url, byte[] bytes) {
String json = new String(bytes);
System.out.println(json);
Fall fall = JSON.parseObject(json, Fall.class);
Fsongurl songurl = fall.getSongurl();
// JSONObject.parseObject(fall.toString(), Fsongurl.class);
System.out.println(JSON.toJSONString(fall));
System.out.println(fall.getSongurl().getFurls().size());

}
求问这个是什么原因啊
...全文
2101 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
竹和蕉的缘分 2015-08-06
  • 打赏
  • 举报
回复
连接成功..等待读取数据 {"error_code":"22000","songinfo":{},"songurl":{"furls":[]}} 0 程序打印出来的结果就只存进去第一层数据,里面的类根本没存数据,求指点
竹和蕉的缘分 2015-08-06
  • 打赏
  • 举报
回复
自己顶起来,求大神指点
竹和蕉的缘分 2015-08-06
  • 打赏
  • 举报
回复
我的变量名定义时候大小写没注意,谢谢你啦,我昨晚弄了一晚上,差点以为fastjson多层嵌套会出问题,看来定义变量一定要注意,
scmod 2015-08-06
  • 打赏
  • 举报
回复
引用 7 楼 u013595126 的回复:
好奇怪,我的类和你建的一模一样,但是就是名称不一样,我的读出来永远是空,但你的就可以,是不是这个嵌套类的名字必须建立的一致才可以啊。
变量名要和json里的key一样的,类名应该随便的,就是变量名要一样,不一样的话要用@JSONField(name="")这样指定key名
竹和蕉的缘分 2015-08-06
  • 打赏
  • 举报
回复
好奇怪,我的类和你建的一模一样,但是就是名称不一样,我的读出来永远是空,但你的就可以,是不是这个嵌套类的名字必须建立的一致才可以啊。
scmod 2015-08-06
  • 打赏
  • 举报
回复

class Bean {

	private Songurl songurl;
	private String error_code;

	public Songurl getSongurl() {
		return songurl;
	}

	public void setSongurl(Songurl songurl) {
		this.songurl = songurl;
	}

	public String getError_code() {
		return error_code;
	}

	public void setError_code(String error_code) {
		this.error_code = error_code;
	}

	@Override
	public String toString() {
		return "Bean [songurl=" + songurl + ", error_code=" + error_code + "]";
	}

}

class Songurl {

	private List<Url> url;

	public List<Url> getUrl() {
		return url;
	}

	public void setUrl(List<Url> url) {
		this.url = url;
	}

	@Override
	public String toString() {
		return "Songurl [url=" + url + "]";
	}

}

class Url {
	
	private String show_link;

	public String getShow_link() {
		return show_link;
	}

	public void setShow_link(String show_link) {
		this.show_link = show_link;
	}

	@Override
	public String toString() {
		return "Url [show_link=" + show_link + "]";
	}
	
}
这个是我随便找点东西测试下的,只是我把返回的数据直接放txt了没去用httpclient获取

public class Demo2 {

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new FileReader("f:/json2.txt"));
		String json = "";
		String temp = "";
		while ((temp = br.readLine()) != null) {
			json += temp;
		}
		Bean bean = JSONObject.parseObject(json, Bean.class);
		System.out.println(bean.getSongurl().getUrl().get(1).getShow_link());
		// System.out.println(JSONObject.parseObject(json).getJSONObject("songurl").getJSONArray("url").get(1));
	}

}
没错的可以拿出来,那个注释掉的syso那样也行就不用写实体类了比较方便,坏处就是不知道哪个是哪个都是getString啥的
竹和蕉的缘分 2015-08-06
  • 打赏
  • 举报
回复
我当时为了测试,就把一个实体类的属性全部都写上了,后面一个实体类的属性就写了几个,songurl实体类中装的是url类的集合,但是后台显示读出来的数据是空的,这个是类的属性必须都要建立不可缺少吗
scmod 2015-08-06
  • 打赏
  • 举报
回复
另外俩实体类都写对了? 层数应该不多看起来貌似...
竹和蕉的缘分 2015-08-06
  • 打赏
  • 举报
回复
自己顶,求解决,这个是因为嵌套的层数太多了吗

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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