fastjson值java对象与JSON串互转

这篇博客详细介绍了如何使用FastJSON库进行Java对象与JSON之间的转换,包括Java对象转JSON对象、JSON对象转Java对象、JSON串转Java对象等,并提到了在处理包含对象集合时保持字段顺序的重要性。
摘要由CSDN通过智能技术生成

com.alibaba.fastjson.JSONObject时经常会用到它的转换方法,包括Java对象转成JSON串、JSON对象,JSON串转成java对象、JSON对象,JSON对象转换Java对象、JSON串等,使用方法总结如下,持续更新…
1、Java对象–>JSON对象
(JSONObject)JSONObject.toJSON(Java对象实例)

 1 public class JSON2JavaTest{
 2     public static void main(String[] args) {
 3         Student stu = new Student("公众号BiggerBoy", "m", 2);
 4 
 5         //Java对象转化为JSON对象
 6         JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);
 7         System.out.println("Java对象转化为JSON对象\n" + jsonObject);//{"name":"公众号编程大道","age":2,"sex":"m"}
 8         
 9     }
10 }

2、Java对象–>JSON字符串
JSONObject.toJSONString(Java对象实例)

1 public class JSON2JavaTest{
2     public static void main(String[] args) {
3         Student stu = new Student("公众号BiggerBoy", "m", 2);
4 
5         //Java对象转换成JSON字符串 或者JSON.toJSONString(stu); JSONObject继承了JSON
6         String stuString = JSONObject.toJSONString(stu);
7         System.out.println("Java对象转换成JSON字符串\n" + stuString);//{"age":2,"name":"公众号编程大道","sex":"m"}
8     }
9 }

3、JSON对象–>JSON字符串
JSONObject.toJSONString();

 1 public class JSON2JavaTest{
 2     public static void main(String[] args) {
 3         Student stu = new Student("公众号BiggerBoy", "m", 2);
 4 
 5         //先转成JSON对象
 6         JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);
 7 
 8         //JSON对象转换为JSON字符串
 9         String jsonString = jsonObject.toJSONString();
10         System.out.println("JSON对象转换为JSON字符串\n" + jsonString);//{"name":"公众号编程大道","age":2,"sex":"m"}
11 
12     }
13 }

4、JSON对象–>Java对象
JSONObject.toJavaObject(JSON对象实例, Java对象.class);

public class JSON2JavaTest{
   public static void main(String[] args) {
       Student stu = new Student("公众号BiggerBoy", "m", 2);

       //先转成JSON对象
       JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);
       
       //JSON对象转换成Java对象
       Student student = JSONObject.toJavaObject(jsonObject, Student.class);
       System.out.println("JSON对象转换成Java对象\n" + student);//Student{name='公众号编程大道', sex='m', age=2}
   }
}

5、JSON字符串–>JSON对象
JSONObject.parseObject(JSON字符串)

 1 public class JSON2JavaTest{
 2     public static void main(String[] args) {
 3         String stuString = "{\"age\":2,\"name\":\"公众号 BiggerBoy\",\"sex\":\"m\"}";
 4 
 5         //JSON字符串转换成JSON对象
 6         JSONObject jsonObject1 = JSONObject.parseObject(stuString);
 7         System.out.println("JSON字符串转换成JSON对象\n" + jsonObject1);//{"sex":"m","name":"公众号编程大道","age":2}
 8     }
 9 }

6、JSON字符串–>Java对象
JSONObject.parseObject(JSON字符串, Java对象.class);

1 public class JSON2JavaTest{
2     public static void main(String[] args) {
3         String stuString = "{\"age\":2,\"name\":\"公众号 BiggerBoy\",\"sex\":\"m\"}";
4 
5         //JSON字符串转换成Java对象
6         Student student1 = JSONObject.parseObject(stuString, Student.class);
7         System.out.println("JSON字符串转换成Java对象\n" + student1);//Student{name='公众号编程大道', sex='m', age=2}
8     }
9 }

如果student对象内有一个对象集合hobbies,相应的,JSON字符串转Map时如果不做处理,hobbies内的字段顺序可能会和原始hobbies字段值不一样

如下,第一次打印hobbies中的hobbyType跑到hobbyName前了,而原始JSON串中恰好和这相反,对于接口加解密生成签名时,字符串顺序尤为重要,若要保证原始顺序,可以加一个参数Feature.OrderedField

第二次打印的hobbies字段内的字符串顺序和原始字符串中一致。

String str1 = "{\"age\":2,\"hobbies\":[{\"hobbyName\":\"篮球\",\"hobbyType\":1},{\"hobbyName\":\"跳绳\",\"hobbyType\":2}],\"name\":\"公众号BiggerBoy\",\"sex\":\"m\"}";

Map map = JSONObject.parseObject(str1, Map.class);
System.out.println(JSONObject.toJSONString(map));
//{"hobbies":[{"hobbyType":1,"hobbyName":"篮球"},{"hobbyType":2,"hobbyName":"跳绳"}],"sex":"m","name":"公众号BiggerBoy","age":2}

Map map1 = JSONObject.parseObject(str1, Map.class, Feature.OrderedField);
System.out.println(JSONObject.toJSONString(map1));
//{"hobbies":[{"hobbyName":"篮球","hobbyType":1},{"hobbyName":"跳绳","hobbyType":2}],"sex":"m","name":"公众号BiggerBoy","age":2}

7、JSON字符串–>List<Java对象>
List parseArray(JSON字符串, Java对象.class)

public class JSON2JavaTest{
   public static void main(String[] args) {
       String stuString = "[{\"age\":2,\"name\":\"公众号\",\"sex\":\"m\"},{\"age\":18,\"name\":\"BiggerBoy\",\"sex\":\"m\"}]";

       //JSON字符串转换成Java对象
       List<Student> studentList = JSONObject.parseArray(stuString, Student.class);
       System.out.println("JSON字符串转换成Java对象list\n" +studentList );
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员beige

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值