java中array/list/map/object与json互相转换详解(转载)

Java中Array/List/Map/Object与JSON互相转换详解(转载)

在Java中,我们常常需要进行各种类型之间的相互转换,最常见的就是把Java中的数据结构与JSON格式进行相互转换。为此,我们需要借助一些工具类库来完成,这篇文章就将详细讲解如何使用这些工具类库进行相应的转换操作。

使用Jackson库进行转换

在Java中,最常用的处理JSON操作的库之一就是Jackson。Jackson是一个开源的、高性能的Java JSON处理库,它支持将Java对象和JSON数据之间进行转换,而且功能非常强大。

将Java对象转换为JSON字符串

让我们首先看一下如何将一个Java对象转换成JSON字符串。假设我们有一个Java对象Person,它包含nameaddressage三个属性。

public class Person {
    private String name;
    private String address;
    private int age;

    // 构造函数、getters和setters等略
}

我们可以使用以下代码将这个Java对象转换成一个JSON字符串:

ObjectMapper mapper = new ObjectMapper();
Person person = new Person("Tom", "Beijing", 20);
String json = mapper.writeValueAsString(person);

将JSON字符串转换为Java对象

接下来,我们看一下如何将一个JSON字符串转换成Java对象。使用以下代码将JSON字符串转换为Person对象:

String jsonInput = "{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20}";
Person person = mapper.readValue(jsonInput, Person.class);

将List转换为JSON字符串

现在我们有一个包含几个Person对象的List对象,如何将它转换成JSON字符串呢?

List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", "Beijing", 20));
personList.add(new Person("Tim", "Shanghai", 30));
personList.add(new Person("Mary", "Guangzhou", 25));
String json = mapper.writeValueAsString(personList);

将JSON字符串转换为List

现在我们有一个包含多个Person对象的JSON格式的字符串,如何将它转换成Java中的List对象呢?

String jsonInput = "[{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20},{\"name\":\"Tim\",\"address\":\"Shanghai\",\"age\":30},{\"name\":\"Mary\",\"address\":\"Guangzhou\",\"age\":25}]";
List<Person> personList = mapper.readValue(jsonInput, new TypeReference<List<Person>>(){});

将Map转换为JSON字符串

我们也可以将Map对象转换为JSON格式的字符串。使用以下代码将Java中的Map对象转换为JSON字符串:

Map<String, Integer> map = new HashMap<>();
map.put("Tom", 20);
map.put("Tim", 30);
map.put("Mary", 25);
String json = mapper.writeValueAsString(map);

将JSON字符串转换为Map

当然,我们还可以将JSON字符串转换为Java中的Map对象。使用以下代码将JSON字符串转换为Map对象:

String jsonInput = "{\"Tom\":20,\"Tim\":30,\"Mary\":25}";
Map<String, Integer> map = mapper.readValue(jsonInput, new TypeReference<Map<String, Integer>>(){});

在Java对象中使用@JsonFormat注解

Jackson库还提供了一个@JsonFormat注解,它可以用来配置对象中Date类型的属性的序列化和反序列化方式。例如,我们有一个Person对象,它包含一个birthdate的属性,我们希望将这个日期属性使用特定的格式进行序列化和反序列化。使用以下代码可以实现这个需求:

public class Person {
    private String name;
    private String address;
    private int age;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private Date birthdate;

    // 构造函数、getters和setters等略
}

使用Gson库进行转换

还有另一个流行的JSON库,那就是Google的Gson,它也可以很方便地进行Java中数据结构与JSON格式之间的转换。

将Java对象转换为JSON字符串

使用以下代码将Java对象转换成JSON字符串:

Gson gson = new Gson();
Person person = new Person("Tom", "Beijing", 20);
String json = gson.toJson(person);

将JSON字符串转换为Java对象

使用以下代码将JSON字符串转换为Java对象:

String jsonInput = "{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20}";
Person person = gson.fromJson(jsonInput, Person.class);

将List转换为JSON字符串

使用以下代码将Java中的List对象转换为JSON字符串:

List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", "Beijing", 20));
personList.add(new Person("Tim", "Shanghai", 30));
personList.add(new Person("Mary", "Guangzhou", 25));
String json = gson.toJson(personList);

将JSON字符串转换为List

使用以下代码将JSON字符串转换为Java中的List对象:

String jsonInput = "[{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20},{\"name\":\"Tim\",\"address\":\"Shanghai\",\"age\":30},{\"name\":\"Mary\",\"address\":\"Guangzhou\",\"age\":25}]";
List<Person> personList = gson.fromJson(jsonInput, new TypeToken<List<Person>>(){}.getType());

将Map转换为JSON字符串

使用以下代码将Java中的Map对象转换为JSON字符串:

Map<String, Integer> map = new HashMap<>();
map.put("Tom", 20);
map.put("Tim", 30);
map.put("Mary", 25);
String json = gson.toJson(map);

将JSON字符串转换为Map

使用以下代码将JSON字符串转换为Java中的Map对象:

String jsonInput = "{\"Tom\":20,\"Tim\":30,\"Mary\":25}";
Type typeOfMap = new TypeToken<Map<String, Integer>>(){}.getType();
Map<String, Integer> map = gson.fromJson(jsonInput, typeOfMap);

使用FastJson库进行转换

最后,让我们来看一下FastJson库,它是阿里巴巴开源的JSON库,它的优点在于能够快速、灵活地执行JSON与Java中数据结构之间的转换。

将Java对象转换为JSON字符串

使用以下代码将Java对象转换为JSON字符串:

Person person = new Person("Tom", "Beijing", 20);
String json = JSON.toJSONString(person);

将JSON字符串转换为Java对象

使用以下代码将JSON字符串转换为Java对象:

String jsonInput = "{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20}";
Person person = JSON.parseObject(jsonInput, Person.class);

将List转换为JSON字符串

使用以下代码将Java中的List对象转换为JSON字符串:

List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", "Beijing", 20));
personList.add(new Person("Tim", "Shanghai", 30));
personList.add(new Person("Mary", "Guangzhou", 25));
String json = JSON.toJSONString(personList);

将JSON字符串转换为List

使用以下代码将JSON字符串转换为Java中的List对象:

String jsonInput = "[{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20},{\"name\":\"Tim\",\"address\":\"Shanghai\",\"age\":30},{\"name\":\"Mary\",\"address\":\"Guangzhou\",\"age\":25}]";
List<Person> personList = JSON.parseObject(jsonInput, new TypeReference<List<Person>>() {});

将Map转换为JSON字符串

使用以下代码将Java中的Map对象转换为JSON字符串:

Map<String, Integer> map = new HashMap<>();
map.put("Tom", 20);
map.put("Tim", 30);
map.put("Mary", 25);
String json = JSON.toJSONString(map);

将JSON字符串转换为Map

使用以下代码将JSON字符串转换为Java中的Map对象:

String jsonInput = "{\"Tom\":20,\"Tim\":30,\"Mary\":25}";
Map<String, Integer> map = JSON.parseObject(jsonInput, new TypeReference<Map<String, Integer>>() {});

总结

本文详细介绍了Java中如何使用Jackson、Gson、FastJson库进行JSON与Java数据结构之间的转换。Jackson是一个功能非常强大的JSON库,Gson是Google开源的JSON库,FastJson是阿里巴巴开源的JSON库。它们都提供了丰富的API接口,可以满足各种不同的需求。通过学习本文,您可以熟练地使用这些库进行JSON与Java数据结构之间的转换操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中array/list/map/object与json互相转换详解(转载) - Python技术站

(0)
上一篇 2023年3月28日
下一篇 2023年3月28日

相关文章

  • 怎么免费激活NiceLabel Designer 附激活步骤+补丁

    怎么免费激活NiceLabel Designer 如果你需要使用NiceLabel Designer却不想花费大量金钱购买正版软件,那么可以通过以下方法进行免费激活。 步骤 第一步:下载NiceLabel Designer软件及补丁 在互联网上下载NiceLabel Designer安装包及其激活补丁。注意:一定要下载安装包和补丁的最新版本。 第二步:安装N…

    other 2023年6月26日
    00
  • 浅谈java 重写equals方法的种种坑

    浅谈Java重写equals方法的种种坑 介绍 在Java中,Object类中的equals方法是用于判断两个对象是否相等的。而且在大多数情况下,我们需要重写该方法来根据业务需要自定义判断两个对象是否相等。但是,重写equals方法并不容易,有一些坑需要我们注意。 重写equals方法的步骤 为了重写equals方法,我们需要遵循以下几个步骤: 首先比较对象…

    other 2023年6月27日
    00
  • Java单链表基本操作的实现

    Java单链表基本操作的实现 单链表是一种常见的线性数据结构,由多个节点(Node)构成。每个节点包含了一个数据(Data)域和一个指向下一个节点的指针(Next)。单链表的基本操作包括:插入,删除,查找和遍历。下面将对这些操作进行详细讲解。 定义节点类 定义一个节点类,包含数据域和下一个节点的指针。如下所示: public class Node { pub…

    other 2023年6月27日
    00
  • this.$message.success(‘提示信息’)少写了一个c导致报错

    以下是“this.$message.success(‘提示信息’)少写了一个c导致报错”的完整攻略,过程中包含两个示例说明的标准Markdown格式文本: this.$message.success(‘提示信息’)少写了一个c导致报错的完整攻略 在Vue.js中,我们经常使用this.$message.success(‘信息’)来显示成功提示信息。但是,有时…

    other 2023年5月10日
    00
  • @ConfigurationProperties绑定配置信息至Array、List、Map、Bean的实现

    @ConfigurationProperties 是 Spring Boot 中的一个注解,它允许我们将应用程序中的配置文件绑定到 Bean 上。绑定后,我们就可以方便地将配置文件的配置值注入到 Bean 中了。除了一个普通的扩展 @ConfigurationProperties 的 Spring Boot Config 类之外,我们还可以将属性绑定到 Co…

    other 2023年6月25日
    00
  • hyper-v的安装及虚拟机安装超详细步骤

    Hyper-V的安装及虚拟机安装超详细步骤 Hyper-V是Windows操作系统中的一种虚拟化技术,可以让用户在同一台计算机上运行多个操作系统。本攻略将介绍如何安装Hyper-V并在其中安装虚拟机,并提供两个示例。 安装Hyper-V 以下是安装Hyper-V的步骤: 打开控制面板并选择“程序和功能”。 单击“打开或关闭Windows功能”。 在“Wind…

    other 2023年5月9日
    00
  • Java深入了解数据结构中常见的排序算法

    Java深入了解数据结构中常见的排序算法 介绍 排序算法是计算机科学中最重要的基础问题之一。在本文中,我们将会介绍数据结构中常见的排序算法。排序算法在很多场景下都有应用,比如搜索、数据压缩、数据库等领域。 本文将会涉及以下排序算法:- 冒泡排序- 选择排序- 插入排序- 快速排序- 归并排序 我们将会通过示例代码来演示每一种算法的原理和实现。 冒泡排序 冒泡…

    other 2023年6月27日
    00
  • SpringBoot多环境配置及配置文件分类实例详解

    SpringBoot多环境配置及配置文件分类实例详解 SpringBoot的多环境配置是指在不同的应用环境中使用不同的配置参数。例如,在开发和生产环境中使用不同的数据库地址、账号和密码等参数。 为此,我们需要在应用的配置文件中进行相应的配置。本文将详细介绍SpringBoot多环境配置及配置文件分类,以示例说明。 配置文件分类 SpringBoot的应用配置…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部