当前位置:   article > 正文

JSON.toJSONString()和Gson.toJson()方法比较

gson.tojson

使用

两个方法都是将Java对象转化为JSON字符串格式,不同点是JSON.toJSONString()是阿里的com.alibaba.fastjson包中的方法,Gson.toJson()是谷歌的com.google.gson包中的方法。

踩过的坑

嫌啰嗦的小伙伴可以直接看分析!!
代码是这样的

public class Person{
	String name;
	String father;
	String mother;
}
public class Student extends Person{
	String name;
	Integer age;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

两个实体类,一个Person类,一个Student类继承Person类,并且Student类中的name字段会覆盖Person类中的name字段。
当使用Student实体类的对象使用Gson.toJson()方法时,会报错,报错内容为:java.lang.IllegalArgumentException: class Student declares multiple JSON fields named name,示例的代码如下:

Student student = new Student();
student.setName("张三");
student.setAge(18);
Gson G = new Gson();
G.toJson(student);
  • 1
  • 2
  • 3
  • 4
  • 5

上面的代码会报错,但是使用阿里的JSON类可以正常运行,如下:

Student student = new Student();
student.setName("张三");
student.setAge(18);
JSON.toJSONString(Student);
  • 1
  • 2
  • 3
  • 4

分析

具体的原因是因为Student继承了Person类,并覆盖了原有的name,在转为JSON字符串的过程中,谷歌的Gson.toJson()方法无法区分是Person中的name还是Student中的name,所以出现了上面提到的报错,但是阿里的JSON.toJSONString()方法会默认转换子类中的属性值,所以不会出现报错。
个人建议JSON相关的处理使用阿里的JSON类!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/1014027
推荐阅读
相关标签
  

闽ICP备14008679号