Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用fastjson解析较为复杂的json数据。大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

app设计中,很多倾向于使用json。

如果数据传递中,目录层次结构多,设计到的方面比较多了,json层级结构就比较复杂。

json解析有很多种方式,网上流传的fastjson是最快的方式。因此我自己做的糗事百科客户端中也使用了这个。这里记录下使用。


首先,看一段json数据。

{
    "count": 30,"items": [
        {
            "image": null,"published_at": 1415478930,"tag": "","user": null,"image_size": null,"id": "93464687","Votes": {
                "down": -86,"up": 578
            },"created_at": 1415478930,"content": "说个朋友的事情吧!很长,耐心看完!简短割一下,纯手打。一个男性朋友,以下简称齐,他是在动车组工作的,28岁,身高1.8米,相貌端正,不抽烟不喝酒,不好名牌,月薪5000,人很不错,去年夏天相亲认识个女的,以下简称璐,27岁,身高也就1.6米,工作临时工,月薪1000,喜欢车(自己买不起,家里不给买),什么东西都喜欢好的。今年俩人研究结婚,我们之间比较熟络,这是背景。之前问她处没处过对象,璐说就处过一个,处了半年。问过她和齐有没有住一起,璐说,夜不归宿她爸爸会打死她,老公是警察,公安网上查的到任何东西,那天璐让老公帮忙查点东西,结果老公意外发现璐的开房记录多达20多条,亮点是分别和6个不同的男的!!!他俩都看糗百,还是逆了吧!!!希望顶高点让男的看到,擦亮眼睛,别花了50多万娶家个好几手货!这条过了再爆璐家里提的各种奇葩要求!","state": "publish","comments_count": 30,"allow_comment": true
        },{
            "image": null,"published_at": 1415476799,"user": {
                "created_at": "0","last_device": null,"role": "n","last_visited_at": "0","state": "active","login": "王致和—逗妇乳","id": "21544723","icon": "20141016154050.jpg"
            },"id": "93461303","Votes": {
                "down": -41,"up": 456
            },"created_at": 1415476799,"content": "老妈:有对象了嘛?
我:没有呢
老妈:有了的话记得说啊,你那点生活费,不够的,别跟你爸似的,当年追我,天天邀我逛街,自己偷偷啃馒头,如果有了,我会给你财政拨款的,,, ,,,,,
顿时泪奔,这才是亲妈啊,,","comments_count": 4,


可以看出: item下包含了Votes,user,image_size....算是比较负责的了。

其次,解析。我们简历ItemBean,UserBean,VoteBean,ImageSize . 这里需要注意的

被包含在ItemBean中的UserBean,和ImageSize 实例名需要和json中的一致。否则不能完全对应解析。

	/**
	 * 用户信息
	 */
	private UserBean user;
	/**
	 * 点赞信息
	 */
	private VotesBean Votes;



ItemBean

package com.qiubaiclient.model;

import java.io.serializable;

/**
 * ItemBean JSON三级数据
 * 
 * @author xiangxm
 * 
 */
public class ItemBean implements serializable {

	privatE int blog_type;

	public int getBlog_type() {
		return blog_type;
	}

	public void setBlog_type(int blog_typE) {
		this.blog_type = blog_type;
	}

	/**
	 * 是否点击过
	 */
	private Boolean isClicked = false;

	public Boolean isClicked() {
		return isClicked;
	}

	public void setClicked(Boolean isClicked,int whoClicked) {
		this.isClicked = isClicked;
		if (null != Votes) {

			Votes.setWhoClicked(whoClicked);
		}
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * 文章附带的图片附件
	 */
	private String image;
	/**
	 * 发布时间
	 */
	private String published_at;
	/**
	 * 标志。暂时不知道是什么作用。
	 */
	private String tag;
	/**
	 * 文章对应的id
	 */
	private String id;
	/**
	 * 文章创建时间。区别于published_at
	 */
	private String created_at;
	/**
	 * 文章内容
	 */
	private String content;
	/**
	 * 文章状态。糗百里面发布文章需要审核,估计这个是审核用的
	 */
	private String state;
	/**
	 * 评论数量
	 */
	privatE int comments_count;
	/**
	 * 是否允许评论
	 */
	private Boolean allow_comment;
	/**
	 * 用户信息
	 */
	private UserBean user;
	/**
	 * 点赞信息
	 */
	private VotesBean Votes;

	private ImageSize image_size;

	public ImageSize getImage_size() {
		return image_size;
	}

	public void setImage_size(ImageSize image_sizE) {
		this.image_size = image_size;
	}

	public String getImage() {
		return image;
	}

	public void setImage(String imagE) {
		this.image = image;
	}

	public String getPublished_at() {
		return published_at;
	}

	public void setPublished_at(String published_at) {
		this.published_at = published_at;
	}

	public String getTag() {
		return tag;
	}

	public void setTag(String tag) {
		this.tag = tag;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getCreated_at() {
		return created_at;
	}

	public void setCreated_at(String created_at) {
		this.created_at = created_at;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getState() {
		return state;
	}

	public void setState(String statE) {
		this.state = state;
	}

	public int getComments_count() {
		return comments_count;
	}

	public void setComments_count(int comments_count) {
		this.comments_count = comments_count;
	}

	public Boolean isAllow_comment() {
		return allow_comment;
	}

	public void setAllow_comment(Boolean allow_comment) {
		this.allow_comment = allow_comment;
	}

	public UserBean getUser() {
		return user;
	}

	public void setUser(UserBean user) {
		thiS.User = user;
	}

	public VotesBean getVotes() {
		return Votes;
	}

	public void setVotes(VotesBean Votes) {
		this.Votes = Votes;
	}

	@Override
	public String toString() {
		return "ItemBean [blog_type=" + blog_type + ",isClicked=" + isClicked
				+ ",image=" + image + ",published_at=" + published_at
				+ ",tag=" + tag + ",id=" + id + ",created_at=" + created_at
				+ ",content=" + content + ",state=" + state
				+ ",comments_count=" + comments_count + ",allow_comment="
				+ allow_comment + ",user=" + user + ",Votes=" + Votes
				+ ",image_size=" + image_size + "]";
	}

}

UserBean

package com.qiubaiclient.model;

import java.io.serializable;

/**
 * JSON五级数据 用户信息
 * 
 * @author xiangxm
 * 
 */
public class UserBean implements serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * 状态标志位,暂时不知道什么用
	 */
	private String created_at;
	/**
	 * 用户使用设备发表
	 */
	private String last_device;
	/**
	 * 用户角色
	 */
	private String role;
	/**
	 * 最后访问
	 */
	private String last_visited_at;
	/**
	 * 用户活跃状态
	 */
	private String state;
	/**
	 * 登录用户名
	 */
	private String login;
	/**
	 * 用户id
	 */
	private String id;
	/**
	 * 用户头像icon名称
	 */
	private String icon;
	public String getCreated_at() {
		return created_at;
	}
	public void setCreated_at(String created_at) {
		this.created_at = created_at;
	}
	public String getLast_device() {
		return last_device;
	}
	public void setLast_device(String last_devicE) {
		this.last_device = last_device;
	}
	public String getRole() {
		return role;
	}
	public void setRole(String rolE) {
		this.role = role;
	}
	public String getLast_visited_at() {
		return last_visited_at;
	}
	public void setLast_visited_at(String last_visited_at) {
		this.last_visited_at = last_visited_at;
	}
	public String getState() {
		return state;
	}
	public void setState(String statE) {
		this.state = state;
	}
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getIcon() {
		return icon;
	}
	public void setIcon(String icon) {
		this.icon = icon;
	}
	@Override
	public String toString() {
		return "UserBean [created_at=" + created_at + ",last_device="
				+ last_device + ",role=" + role + ",last_visited_at="
				+ last_visited_at + ",state=" + state + ",login=" + login
				+ ",icon=" + icon + "]";
	}

	

}

VotesBean

package com.qiubaiclient.model;

import java.io.serializable;

/**
 * 点赞与不点赞的数据
 * 
 * @author xiangxm
 * 
 */
public class VotesBean implements serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * 不点赞
	 */
	privatE int down;
	/**
	 * 点赞
	 */
	privatE int up;

	public int getDown() {
		return down;
	}

	public void setDown(int down) {
		this.down = down;
	}

	public int getUp() {
		return up;
	}

	public void setUp(int up) {
		thiS.Up = up;
	}

	@Override
	public String toString() {
		return "VotesBean [down=" + down + ",up=" + up + "]";
	}
	
	/**
	 * 身份识别,看是up被点击了还是其他的被点击了。
	 */
	privatE int whoClicked = 0 ;
	
	public int getWhoClicked() {
		return whoClicked;
	}

	public void setWhoClicked(int whoClicked) {
		this.whoClicked = whoClicked;
	}

	public static final int UP_CLICKED = 0 ;
	public static final int DOWN_CLICKED = 1 ;
	public static final int SHARE_CLICKED = 2 ;
	

}


ImageSize

package com.qiubaiclient.model;

import java.io.serializable;

/**
 * 照片尺寸
 * 
 * @author xiangxm
 * 
 */
public class ImageSize implements serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	privatE int[] s;
	privatE int[] m;

	public int[] getS() {
		return s;
	}

	public void setS(int[] s) {
		this.s = s;
	}

	public int[] getM() {
		return m;
	}

	public void setM(int[] m) {
		this.m = m;
	}

}

ArticleBean


package com.qiubaiclient.model;

import java.util.ArrayList;
import java.util.List;

/**
 * 
 * 使用fastjson解析
 * 
 * @author xiangxm
 * 
 */
public class ArticleBean {

	private int count;
	private long @R_244_10586@l;
	privatE int page;
	/**
	 * items所对应的数组
	 */
	private List<ItemBean> items = new ArrayList<ItemBean>();

	public List<ItemBean> getItems() {
		return items;
	}

	public void setItems(List<ItemBean> items) {
		this.items = items;
	}

	public int getCount() {
		return count;
	}

	public void setCount(int count) {
		this.count = count;
	}

	public long get@R_244_10586@l() {
		return @R_244_10586@l;
	}

	public void set@R_244_10586@l(long @R_244_10586@l) {
		this.@R_244_10586@l = @R_244_10586@l;
	}

	public int getPage() {
		return page;
	}

	public void setPage(int pagE) {
		this.page = page;
	}

	@Override
	public String toString() {
		return "ArticleBean [count=" + count + ",@R_244_10586@l=" + @R_244_10586@l + ",page="
				+ page + ",items=" + items + "]";
	}

}


解析:

List<ItemBean> tempList = JSON.parSEObject(responseStr,ArticleBean.class).getItems();

大佬总结

以上是大佬教程为你收集整理的使用fastjson解析较为复杂的json数据。全部内容,希望文章能够帮你解决使用fastjson解析较为复杂的json数据。所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。