JSON序列化和反序列化

秒速五厘米 2023-09-25 23:43 210阅读 0赞

JSON是阿里巴巴开发的一款JSON处理工具包,提供了常用的JSON序列化(将Java对象转换为JSON字符串)和反序列化(将JSON字符串转换为Java对象)方法。下面是一些JSON中常用的方法:

JSON.parseObject(String text, Class clazz):将JSON字符串转换为Java对象。

JSON.toJSONString(Object object):将Java对象序列化为JSON字符串。

JSON.parseArray(String text, Class clazz):将JSON字符串转换为Java对象集合。

JSON.toJSON(Object object):将Java对象转换为JSONObject或JSONArray对象。

JSON.parse(String text):将JSON字符串解析为JSONObject或JSONArray对象。

注意:要在pom.xml文件添加依赖

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>fastjson</artifactId>
  4. <version>1.2.59</version>
  5. </dependency>
  6. // 将JSON字符串转换为Java对象
  7. String json = "{\"name\":\"Tom\",\"age\":20}";
  8. Person person = JSON.parseObject(json, Person.class);
  9. // 将Java对象序列化为JSON字符串
  10. Person person = new Person();
  11. person.setName("Tom");
  12. person.setAge(20);
  13. String json = JSON.toJSONString(person);
  14. // 将Java对象转换为JSONObject或JSONArray对象
  15. Person person = new Person();
  16. person.setName("Tom");
  17. person.setAge(20);
  18. JSONObject jsonObject = (JSONObject) JSON.toJSON(person);
  19. // 将JSON字符串转换为Java对象集合
  20. String json = "[{\"name\":\"Tom\",\"age\":20},{\"name\":\"Jerry\",\"age\":18}]";
  21. List<Person> persons = JSON.parseArray(json, Person.class);
  22. // 将JSON字符串解析为JSONObject或JSONArray对象
  23. String json = "{\"name\":\"Tom\",\"age\":20}";
  24. JSONObject jsonObject = JSON.parseObject(json);

需要注意的是,JSON序列化和反序列化时,需要保证Java对象中属性的名称和类型与JSON字符串中各个字段的名称和类型一一对应。如果Java对象中的属性与JSON字符串中的字段不匹配,或者JSON字符串中的字段缺失,则可能导致JSON解析出错。

为了确保Java对象中属性的名称和类型与JSON字符串中各个字段的名称和类型一一对应,通常可以采用以下两种方式:

使用注解标记属性和字段名称:在Java对象中为每个属性添加注解,指定属性对应的JSON字符串中的字段名称。例如,使用FastJSON库时可以使用@JSONField注解,如下所示:

public class Person {
@JSONField(name = “person_name”)
private String name;
@JSONField(name = “person_age”)
private int age;

// Getter and Setter
}
在上述示例中,我们为name和age属性添加了@JSONField注解,并指定了对应的JSON字符串中的字段名称。这样在序列化和反序列化时,FastJSON就会按照指定的名称进行映射。

使用命名规范:在Java对象中使用命名规范,使每个属性名称与JSON字符串中的字段名称一一对应。例如,Java对象中的属性采用驼峰命名法,而JSON字符串中的字段采用下划线分割法。在这种情况下,Java对象仅需按照命名规范命名属性,就可以与JSON字符串中的字段一一对应。例如:

public class Person {
private String personName;
private int personAge;

// Getter and Setter
}
在上述示例中,我们使用了驼峰命名法为name和age属性命名。在序列化和反序列化时,FastJSON会自动将其转换为对应的JSON字符串中的字段名称person_name和person_age。

总之,为了确保Java对象中属性的名称和类型与JSON字符串中各个字段的名称和类型一一对应,需要设计良好的Java对象属性命名规范,并在序列化和反序列化时按照命名规范进行字段映射。同时,也可以使用注解等方式明确指定属性和字段名称,提高映射的准确性。

发表评论

表情:
评论列表 (有 0 条评论,210人围观)

还没有评论,来说两句吧...

相关阅读