Java实现Json字符串与Object对象相互转换的方式总结

这篇文章主要介绍了Java实现Json字符串与Object对象相互转换的方式,结合实例形式总结分析了java基于Json-Lib、Org.Json、Jackson、Gson、FastJson五种方式转换json类型相关操作技巧,需要的朋友可以参考下

本文实例总结了Java实现Json字符串与Object对象相互转换的方式。分享给大家供大家参考,具体如下:

Json-Lib、Org.Json、Jackson、Gson、FastJson五种方式转换json类型

只列举了最省事的方式。不涉及复制情况和速度。

测试用例,一个User类,属性name,age,location。重写toString()。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

public class User {

  private String name;

  private Integer age;

  private String location;

  public User() {

  }

  public User(String name) {

    this.name = name;

  }

  public User(String name, Integer age) {

    this.name = name;

    this.age = age;

  }

  public User(String name, Integer age, String location) {

    this.name = name;

    this.age = age;

    this.location = location;

  }

  public String getName() {

    return name;

  }

  public void setName(String name) {

    this.name = name;

  }

  public Integer getAge() {

    return age;

  }

  public void setAge(Integer age) {

    this.age = age;

  }

  public String getLocation() {

    return location;

  }

  public void setLocation(String location) {

    this.location = location;

  }

  @Override

  public String toString() {

    return "User{" +

        "name='" + name + '\'' +

        ", age=" + age +

        ", location='" + location + '\'' +

        '}';

  }

}

1、Json-Lib

maven依赖如下,需注意<classifier>jdk15</classifier>,jar包区分jdk1.3和jdk1.5版本

1

2

3

4

5

6

<dependency>

 <groupId>net.sf.json-lib</groupId>

 <artifactId>json-lib</artifactId>

 <version>2.4</version>

 <classifier>jdk15</classifier>

</dependency>

测试demo

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

import net.sf.json.JSONObject;

public class JsonLibDemo {

  public static void main(String[] args) {

    //创建测试object

    User user = new User("李宁",24,"北京");

    System.out.println(user);

    //转成json字符串

    JSONObject jsonObject = JSONObject.fromObject(user);

    String json = jsonObject.toString();

    System.out.println(json);

    //json字符串转成对象

    JSONObject jsonObject1 = JSONObject.fromObject(json);

    User user1 = (User) JSONObject.toBean(jsonObject1,User.class);

    System.out.println(user1);

  }

}

2、org.json

maven依赖如下

1

2

3

4

5

<dependency>

 <groupId>org.json</groupId>

 <artifactId>json</artifactId>

 <version>20170516</version>

</dependency>

测试demo

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

import org.json.JSONObject;

public class OrgJsonDemo {

  public static void main(String[] args) {

    //创建测试object

    User user = new User("李宁",24,"北京");

    System.out.println(user);

    //转成json字符串

    String json = new JSONObject(user).toString();

    System.out.println(json);

    //json字符串转成对象

    JSONObject jsonObject = new JSONObject(json);

    String name = jsonObject.getString("name");

    Integer age = jsonObject.getInt("age");

    String location = jsonObject.getString("location");

    User user1 = new User(name,age,location);

    System.out.println(user1);

  }

}

3、Jackson

maven依赖

1

2

3

4

5

<dependency>

 <groupId>com.fasterxml.jackson.core</groupId>

 <artifactId>jackson-databind</artifactId>

 <version>2.9.0</version>

</dependency>

测试demo

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonDemo {

  public static void main(String[] args) {

    //创建测试object

    User user = new User("李宁",24,"北京");

    System.out.println(user);

    //转成json字符串

    ObjectMapper mapper = new ObjectMapper();

    try {

      String json = mapper.writeValueAsString(user);

      System.out.println(json);

      //json字符串转成对象

      User user1 = mapper.readValue(json,User.class);

      System.out.println(user1);

    } catch (java.io.IOException e) {

      e.printStackTrace();

    }

  }

}

4、Gson

maven依赖

1

2

3

4

5

<dependency>

 <groupId>com.google.code.gson</groupId>

 <artifactId>gson</artifactId>

 <version>2.8.1</version>

</dependency>

测试demo

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

import com.google.gson.Gson;

public class GsonDemo {

  public static void main(String[] args) {

    //创建测试object

    User user = new User("李宁",24,"北京");

    System.out.println(user);

    //转成json字符串

    Gson gson = new Gson();

    String json = gson.toJson(user);

    System.out.println(json);

    //json字符串转成对象

    User user1 = gson.fromJson(json,User.class);

    System.out.println(user1);

  }

}

5、FastJson

maven依赖

1

2

3

4

5

<dependency>

 <groupId>com.alibaba</groupId>

 <artifactId>fastjson</artifactId>

 <version>1.2.37</version>

</dependency>

测试demo

1

2

3

4

5

6

7

8

9

10

11

12

13

14

import com.alibaba.fastjson.JSON;

public class FastJsonDemo {

  public static void main(String[] args) {

    //创建测试object

    User user = new User("李宁",24,"北京");

    System.out.println(user);

    //转成json字符串

    String json = JSON.toJSON(user).toString();

    System.out.println(json);

    //json字符串转成对象

    User user1 = JSON.parseObject(json,User.class);

    System.out.println(user1);

  }

}

json-lib时间有些久远,jar包只更新到2010年

org.json用起来有些繁琐

Jackson、Gson、FastJson只需一两句话就可以搞定

Guess you like

Origin blog.csdn.net/shan1774965666/article/details/104612140