json解析和自定义json之fastjson基础
程序员文章站
2022-06-17 09:06:07
...
最近使用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。
推荐阅读
-
SpringBoot整合SpringMVC之自定义JSON序列化器和反序列化器
-
bootstrap搜索建议插件suggest+使用FastJSON进行JSON和String转换解析
-
【Java中级】23.0 SSM之SpringBoot框架(三)——返回json数据、FastJson框架和热部署...
-
Android数据解析JSON解析之FastJson解析
-
使用 fastjson 进行json的解析和拼装
-
json解析和自定义json之fastjson基础
-
详细介绍java中fastjson生成和解析json数据(序列化和反序列化数据)
-
Unity 基础 之 Litjson 简单进行 json 创建与解析
-
SpringBoot整合SpringMVC之自定义JSON序列化器和反序列化器
-
详细介绍java中fastjson生成和解析json数据(序列化和反序列化数据)