json解析和自定义json之fastjson基础

本人博客全部迁至个人博客,柒情博客http://www.ityw.club ,后续所有博客将在柒情博客上进行更新。

最近使用fastjson,写了几个关于json解析和自定义json的例子,下面贴出来

一、准备工作

使用Maven,在pom.xml文件加入以下依赖

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.1.41</version>
</dependency>

手写一个json字符串

{
"id": "1",
"name": "天空",
"sons": [{
"sonid": "2",
"sonname": "月亮"
}, {
"sonid": "3",
"sonname": "星星"
}]
}

 

可在此网站校验json格式是否正确 https://www.bejson.com/

可在此网站压缩json字符串 https://www.bejson.com/zhuanyi/

压缩好的字符串在记事本中将所有"替换成\" (如图),即可放入定义json字符串代码中

二、json解析

json解析有两种方式 见下面代码

1.转换成jsonobject对象根据名字取

2.将json转化为对象(主流)

public class Jsondome {
	//定义一个json字符串
	static String json="{\"id\":\"1\",\"name\":\"天空\",\"sons\":[{\"sonid\":\"2\",\"sonname\":\"月亮\"},{\"sonid\":\"3\",\"sonname\":\"星星\"}]}";
	public static void main(String[] args) {
		//1.先转换成jsonobject对象
		JSONObject JsonObject = new JSONObject().parseObject(json);
		String id = JsonObject.getString("id");
		String name = JsonObject.getString("name");
		System.out.println("id:"+id+"===="+"name:"+name);
		JSONArray JSONArray=JsonObject.getJSONArray("sons");
		for (int i = 0; i < JSONArray.size(); i++) {
			JSONObject object=JSONArray.getJSONObject(i);
			String sonid = object.getString("id");
			String sonname = object.getString("name");
			System.out.println("sonid"+sonid+"===="+"sonname"+sonname);
		}
		
		//2.json转换对象
		User user = new JSONObject().parseObject(json, User.class);
		System.out.println("user:"+user.toString());
		
	}
}

实体(必须和jsondome2同包原因详见注意)

class Son{
	private String sonid;
	private String sonname;
	public String getSonid() {
		return sonid;
	}
	public void setSonid(String sonid) {
		this.sonid = sonid;
	}
	public String getSonname() {
		return sonname;
	}
	public void setSonname(String sonname) {
		this.sonname = sonname;
	}
	@Override
	public String toString() {
		return "son [sonid=" + sonid + ", sonname=" + sonname + "]";
	}
	


	
	
}
public class User {

	private String id;
	private String name;
	private List<Son>sons;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public List<Son> getSons() {
		return sons;
	}
	public void setSons(List<Son> sons) {
		this.sons = sons;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", sons=" + sons + "]";
	}
	
	
}

三、自定义json

也是两种方法(见代码)

1.直接定义

2.通过实体类封装

public class Jsondome2 {

	public static void main(String[] args) {
		//自定义json字符串
//		JSONObject r=new JSONObject();
//		r.put("id","1");
//		r.put("name","天空");
//		JSONArray jsonArray = new JSONArray();
//		JSONObject object1=new JSONObject();
//		object1.put("sonid","2");
//		object1.put("sonname","月亮");
//		jsonArray.add(object1);
//		JSONObject object2=new JSONObject();
//		object2.put("sonid","3");
//		object2.put("sonname","星星");
//		jsonArray.add(object2);
//		r.put("sons",jsonArray);
//		System.out.println(r.toJSONString());
		//使用实体类封装json
		User user=new User();
		user.setId("1");
		user.setName("天空");
		List<Son> ListSon=new ArrayList<Son>();
		Son son1 = new Son();
		son1.setSonid("2");
		son1.setSonname("月亮");
		Son son2=new Son();
		son2.setSonid("3");
		son2.setSonname("星星");
		ListSon.add(son1);
		ListSon.add(son2);
		user.setSons(ListSon);
		System.out.println(new JSONObject().toJSONString(user));
	}
}

 

四、注意

json字符串中的数组,实体类我使用的是内部类,未加修饰符所以必须同包

 

 

public:可以被所有其他类所访问

private:只能被自己访问和修改

protected:自身、子类及同一个包中类可以访问

default:同一包中的类可以访问,声明时没有加修饰符,认为是friendly。

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值