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

yizhihongxing

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日

相关文章

  • php遍历树的常用方法汇总

    非常感谢您对“php遍历树的常用方法汇总”的关注。在这篇文章中,我们将会讲解php遍历树的几种常用方法,并提供一些示例,方便大家更好地理解。主要内容如下: 一、深度优先遍历DFS 深度优先遍历是遍历树的一种经典方法。对于一棵树而言,深度优先遍历一般是通过递归实现的。具体来说,我们可以先遍历当前节点的左子树,再遍历右子树,最后才访问当前节点。以下是一个使用深度…

    other 2023年6月27日
    00
  • Java 重写时应当遵守的 11 条规则

    下面是关于“Java 重写时应当遵守的 11 条规则”的详细讲解攻略。 概述 当我们在Java中使用继承时,重写父类中的方法是常见的操作。但是,如果我们不遵守适当的规则,就会出现问题。这些问题包括出错、程序崩溃以及不正确的行为。为了规避这些问题,以下是重写Java方法时应该遵守的11条规则。 11条规则 1. 参数列表必须完全一致 重写时必须与父类完全匹配的…

    other 2023年6月27日
    00
  • 可以查询系统用户名sid的vbs

    首先,系统用户名对应着Windows系统中的Security Identifier(SID),每个用户都有唯一的SID标识符。查询系统用户名的方法可以使用VBScript语言编写,以下是具体的攻略步骤。 步骤一:编写vbs代码,定位用户的SID值。 在vbs代码区块中编写以下代码,通过WScript实现获取当前用户的用户名。 Set objWshNetwor…

    other 2023年6月27日
    00
  • jenkins忘记管理员登陆密码的补救措施

    Jenkins 忘记管理员登录密码的补救措施 在使用 Jenkins 进行持续集成和持续交付时,我们可能会遇到忘记管理员登录密码的情况。本文将介绍 Jenkins 忘记管理员登录密码的补救措施,包括基本概念、应用场景、实现方法和示例说明。 基本概念 Jenkins 是一款流行的开源持续集成和持续交付工具,可以用于构建、测试和部署软件。在 Jenkins 中,…

    other 2023年5月6日
    00
  • 免费连接海外加速器有哪些?

    免费连接海外加速器的方式有很多,以下是几种常见的方法: 1. 使用SSR/V2Ray节点 SSR和V2Ray是两种常见的科学上网协议,可以通过搭建自己的节点或者使用第三方提供的免费节点来实现科学上网。以下是具体的操作流程: a. 下载安装客户端 可以在网上下载相应的SSR/V2Ray客户端,如SSR客户端 ShadowsocksR-win-4.9.2.zip…

    其他 2023年4月16日
    00
  • Python实现配置文件备份的方法

    下面我将详细讲解如何使用Python实现配置文件备份的方法。 简介 项目中的配置文件是非常重要的,因此在备份配置文件时必须小心谨慎。Python是一种非常流行的编程语言,可以方便地实现配置文件备份。在Python中,可以使用os和shutil模块来进行文件备份。 实现步骤 检查源文件所在目录是否存在,如果不存在,则创建该目录。 检查目标文件所在目录是否存在,…

    other 2023年6月25日
    00
  • 防盗链与x-tengine-error:deniedbyrefereracl

    以下是关于“防盗链与x-tengine-error:deniedbyrefereracl”的完整攻略,包含两个示例。 防盗链与x-tengine-error:deniedbyrefercl 防盗链是一种保护网站资源的方法,可以防止其他站直接链接到你的资源,从而减少带宽消和保护网站安全。但是,有时候防盗链会导致一些问题,如x-tengine-error:den…

    other 2023年5月9日
    00
  • ASP定义数组方法的技巧

    ASP是一种在web开发中经常使用的编程语言。在ASP中定义数组是一项基础技能,正确使用这种技巧可以更好地编写复杂的应用程序。本文将为您提供详细的步骤和示例,帮助您更好地理解ASP中定义数组的方法。 一、创建数组 在ASP中创建数组非常简单,只需要定义一个变量并将其设置为数组即可。下面是示例代码: Dim numbers(3) numbers(0) = 1 …

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