json的两种格式,以及json字符串与java对象互相转换

json字符串与java对象互相转换

    在开发过程中,经常需要和别的系统进行数据交换。数据交换的格式有xml,json等,json作为一个轻量级的数据格式,比xml效率高。xml需要很多标签,这无疑占据了网络流量,速度很慢。

    json可以有两种格式: 对象格式、数组对象
对象格式的字符串:
{"name":"json","address":"hangzhou","age":25}
数组对象格式:
[{"name":"json","address":"zhengzhou","age":25}]
从上面的两种格式可以看出,对象格式和数组对象格式唯一的区别是在对象格式的基础上加上了[]!再看来具体的结构,都是以键值对的形式出现,中间用英文逗号分隔。

在开发中, 后端返回json格式的字符串,前台使用js中的JSON.parse()方法,把json字符串解析成java对象,然后再进行遍历,供前段使用。

那么如何实现json字符串和java对象的相互转换呢?
    要想实现json和java对象的转换,需要借助第三方的jar包,这里使用json-lib这个包,它还依赖另外五个jar包。可以百度。
json-lib包提供了几个类可以完成此功能,例如: JSONObject、JSONArray。
从类的名字上可以看出JSONObject转化的应该是对象格式,JSONArray转换的是数组对象(带[]形式的json)

1、把java对象转换成json字符串代码:
public static void convertObject() {
Student stu=new Student();
stu.setName("JSON");
stu.setAge("23");
stu.setAddress("北京市西城区");
//1、使用JSONObject
JSONObject json = JSONObject.fromObject(stu);
//2、使用JSONArray
JSONArray array= JSONArray.fromObject(stu);
String strJson=json.toString();
String strArray=array.toString();
System.out.println("strJson:"+strJson);
System.out.println("strArray:"+strArray);
}
打印结果
strJson:{"address":"北京市西城区","age":"23","name":"JSON"}
strArray:[{"address":"北京市西城区","age":"23","name":"JSON"}]
从结果中可以看出两种方法都可以把java对象转化为JSON字符串,只是转化后的结构不同。

2、JSON字符串------》》java对象
public static void jsonStrToJava(){
//定义两种不同格式的字符串
String objectStr="{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}";
String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城区\"}]";
//1、使用JSONObject
JSONObject jsonObject=JSONObject.fromObject(objectStr);
Student stu=(Student)JSONObject.toBean(jsonObject, Student.class);
//2、使用JSONArray
JSONArray jsonArray=JSONArray.fromObject(arrayStr);
//获得jsonArray的第一个元素
Object o=jsonArray.get(0);
JSONObject jsonObject2=JSONObject.fromObject(o);
Student stu2=(Student)JSONObject.toBean(jsonObject2, Student.class);
System.out.println("stu:"+stu);
System.out.println("stu2:"+stu2);
}
打印的结果为:
stu:Student [name=JSON, age=24, address=北京市西城区]
stu2:Student [name=JSON, age=24, address=北京市西城区]
从代码可以看出,使用JSONObject可以轻松的把JSON格式的字符串转化为java对象,但是使用JSONArray就没有这么容易了,因为它由[]号,需要先获取JSONArray的对象之后,取其第一个元素即我们需要的student的变形,然后使用JSONObject轻松获取。

猜你喜欢

转载自blog.csdn.net/zhangxingyu126/article/details/80646833
今日推荐