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日

相关文章

  • Javascript防止图片拉伸的自适应处理方法

    Javascript防止图片拉伸的自适应处理方法 问题背景 在网页开发中,我们经常遇到需要展示图片的情况。但是,当图片的尺寸和容器的尺寸不匹配时,会导致图片被拉伸或挤压,影响用户体验。因此,我们需要一种方法来防止图片拉伸,使其在容器中自适应展示。 解决方案 以下是几种常用的Javascript防止图片拉伸的自适应处理方法: 1. CSS背景图方法 如果我们希…

    other 2023年6月28日
    00
  • 魔兽世界7.3.5酒仙怎么堆属性 wow7.35酒仙配装属性优先级攻略

    魔兽世界7.3.5酒仙怎么堆属性 wow7.35酒仙配装属性优先级攻略 在游戏中,给自己的角色进行配装是提升战斗力的重要手段之一。而在魔兽世界7.3.5版本中,酒仙职业的属性堆叠较为特殊,需要注重一些细节。下面将详细讲解魔兽世界7.3.5酒仙怎么堆属性和酒仙配装属性优先级攻略。 1. 属性堆叠 酒仙作为坦克职业,其属性堆叠应以耐力(Stamina)和身法(A…

    other 2023年6月27日
    00
  • AndroidHttpClient详解及调用示例

    AndroidHttpClient详解及调用示例 什么是AndroidHttpClient AndroidHttpClient是一个基于Apache HttpClient的AndroidHTTP客户端,它可以帮助我们更加轻松地使用HTTP/HTTPS来访问网络资源。在Android 6.0及以上版本中,AndroidHttpClient被标记为过时,我们应该…

    other 2023年6月26日
    00
  • GTA5 PC版右键跳出怎么办 右键跳出解决方法介绍

    以下是“GTA5 PC版右键跳出怎么办 右键跳出解决方法介绍”的完整攻略。 问题描述 在玩GTA5 PC版游戏时,可能会出现右键跳出的情况,这会影响游戏体验。因此,我们需要解决这个问题。 解决方法 针对这个问题,有以下解决方法。 方法一:改变鼠标双击速度 右键跳出可能是由于鼠标双击速度过快引起的。因此,我们可以通过改变鼠标双击速度来解决这个问题。 具体操作步…

    other 2023年6月27日
    00
  • 小米手机4的内存速度怎么样?eMMC 5.0速度快不快?

    小米手机4采用了eMMC 5.0存储技术,它的内存速度相对较快。eMMC 5.0是一种闪存存储解决方案,它采用了高速的MMC(多媒体卡)接口,提供了更快的数据传输速度和更好的性能。 eMMC 5.0的速度主要受到两个因素的影响:读取速度和写入速度。下面是两个示例说明: 读取速度:小米手机4的eMMC 5.0存储器具有较快的读取速度,这对于快速加载应用程序和文…

    other 2023年8月1日
    00
  • QT串口通信的实现方法

    下面我将详细介绍QT串口通信的实现方法的攻略。 1. 概述 QT是一个跨平台的GUI应用程序开发框架,其自带的串口通信模块可以完成与串口设备的通讯。串口通信是指应用程序通过串口与外部设备进行通信。在QT中,通过QSerialPort类提供的API接口来实现对串口的操作。 2. QT串口通信的实现 2.1 创建串口对象 创建串口对象时需要指定串口名称、波特率、…

    other 2023年6月26日
    00
  • 详谈java集合框架

    详谈Java集合框架 什么是Java集合框架? Java集合框架是Java提供的一组API,用于处理一组对象的集合。Java集合框架提供了一系列接口和类,可用于存储和操作集合。 Java中的集合框架包括以下三类: 列表(List):可重复的集合,提供有序访问元素的方式,如ArrayList、LinkedList、Stack等; 集(Set):不可重复的集合,…

    other 2023年6月27日
    00
  • qt生成word、pdf文档

    Qt生成Word、PDF文档 在Qt中,可以使用第三方库或Qt自带的模块来生成Word、PDF文档。本文将介绍如何使用Qt生成Word、PDF文档的完整攻略,包括使用第三方库和Qt自带的模块,以及示例说明。 使用第三方库生成Word、PDF文档 Qt中可以使用第三方库来生成Word、PDF文档,常用的库有QPrinter、QTextDocument、QTex…

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