如何将Java对象转换为JSON字符串

当学习如何编写基于Java的软件时,开发人员遇到的第一个障碍就是如何将其代码与其他软件连接。 这通常是JSON的来源。尽管您可能是Java向导,但JSON是另一种动物。 无论如何,这篇博客文章解释了完成工作所需的一切。

Java对象是数据和处理可用数据的过程的组合

对象既有状态又有行为 。 在Java中,使用关键字“ new”创建对象。

对象是从称为类的模板创建的。

对象是类的实例。

例如,我们的“ 猫对象 ”有: 美国 -颜色,名称,品种
对象的状态存储在字段(变量)中。 行为 –呼pur,进食,睡觉的方法(功能)显示对象的行为。

  • JSONJavaScript Object Notation的首字母缩写。
  • JSON格式   被设计为数据交换格式,并且语法是JavaScript的子集。
  • 从文本文件等加载的引号(单引号或双引号)包围的上下文称为JSON字符串。
    例如
    {“ id”:1,“ name”:“ SiAm”,“ color”:“ Cream”,“ eyecolor”:“ Blue”,“ breed”:“ Siamese”}
  • JSON是可互操作的,这意味着它与语言/平台无关。
  • JSON格式用于通过网络连接序列化和传输结构化数据。 它主要用于在服务器和移动/ Web应用程序之间传输数据,是XML的替代方法。

下面的示例演示了一个客户端服务器场景,其中RESTful Web服务接受XML / JSON格式的数据。

  • RESTful Web服务器应用程序是使用Java设计的:
  • 最终用户不了解xml / json,但这不是问题
  • 最终用户与可能是android的移动应用进行通信
  • 最终用户与可能是php的移动应用进行通信
  • 移动/ Web应用程序通过XML / JSON与RESTful Web服务进行通信

在上面的示例图中,我们的RESTful Web服务是使用Java设计的。

由于Java对象只能由Java应用程序理解,因此在为Android应用程序创建Web服务时,需要将Java对象转换为JSON。 假设移动应用是一个混合应用,其中前端由android视图处理,数据交易通过自己的网络服务使用JSON发送。 在这种情况下,我们需要使用Web服务/ api和JSON数据结构从android应用向数据库发送/从数据库接收请求。

  • JSON是简单的字符串格式数据。 JSON是可读格式 。 从中读取和推断信息非常容易。
  • JSON格式易于使用。
  • 与XML等其他格式相比,JSON 的重量
  • JSON 格式可以轻松地以面向对象的方式转换为Java对象
  • JSON是可互操作的:程序和平台无关。

如何将Java对象转换为JSON字符串的分步示例

将Java Object转换为JSON字符串的最常见方法是使用API 。 为此目的最常用的API是Jackson和GSON。

本示例说明如何使用JACKSON API将Java对象转换为JSON字符串。

我们可以使用Jackson API提供的ObjectMapper类进行转换。

  • writeValueAsString()用于将Java obj转换为JSON
  • readValue()用于将JSON转换为Java obj

步骤1:

使用MAVEN进行依赖关系管理(推荐)时,可以包括以下依赖关系来下载JAR文件,JACKSON的任何依赖关系,并自动将其包括在项目的类路径中。

将以下依赖项添加到pom文件:

 <dependencies>  <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version> 2.9 . 8 </version>  </dependency>  </dependencies> 

步骤2:

 ObjectMapper mapper = new ObjectMapper();  try { String json = mapper.writeValueAsString(cat); System.out.println( "ResultingJSONstring = " + json); //System.out.println(json);  } catch (JsonProcessingException e) { e.printStackTrace();  } 

本示例使用以下代码:

类useJACKSONapiToConvertJavaOBJtoJSONstring

 import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public class useJACKSONapiToConvertJavaOBJtoJSONstring { public static void main(String[] args) { Cat cat = new Cat(); cat.setId(1L); cat.setName( "SiAm" ); cat.setColor( "Cream" ); cat.setEyecolor( "Blue" ); cat.setBreed( "Siamese" ); ObjectMapper mapper = new ObjectMapper(); try { String json = mapper.writeValueAsString(cat); System.out.println( "ResultingJSONstring = " + json); //System.out.println(json); } catch (JsonProcessingException e) { e.printStackTrace(); } Cat class 
 public class Cat { private Long id; private String name; private String color; private String eyecolor; private String breed; public Cat() { public Cat(Long id, String name) { this .id = id; this .name = name; // Getters & Setters @Override public String toString() { return "Cat{" + "id=" + id + ", name='" + name + '\'' + '}' ; public Long getId() { return id; } id; } public void setId(Long id) { this .id = id; } .id = id; } public String getName() { return name; } name; } public void setName(String name) { this .name = name; } .name = name; } public String getColor() { return color; } color; } public void setColor(String color) { this .color = color; } .color = color; } public String getEyecolor() { return eyecolor; public void setEyecolor(String eyecolor) { this .eyecolor = eyecolor; } .eyecolor = eyecolor; } public String getBreed() { return breed; } breed; } public void setBreed(String breed) { this .breed = breed; } .breed = breed; } } 

步骤3:运行useJACKSONapitoConvertJavaOBJtoJSONstring

 ResultingJSONstring = { "id" : 1 , "name" : "SiAm" , "color" : "Cream" , "eyecolor" : "Blue" , "breed" : "Siamese" } 

使用 com.google.gson 查找 Java 代码段 的最佳示例

下面的示例演示如何使用GSON API将Java对象转换为JSON字符串。

步骤1:

使用MAVEN进行依赖关系管理(推荐)时,可以包括以下依赖关系来下载JAR文件,GSON的任何依赖关系,并自动包括在项目的类路径中,如下所示:

将以下依赖项添加到pom文件:

 <dependencies>  <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version> 2.3 . 1 </version> </dependency>  </dependencies> 

步骤2:

使用以下命令调用GSON API:Gson gson = new Gson();

本示例使用以下代码:

类UseGSONapitoConvertJavaOBJtoJASONstring

 import com.google.gson.Gson;  public class UseGSONapitoConvertJavaOBJtoJASONstring{ public static void main(String args[]) { CatDetails user = new CatDetails( "SiAm" , "Siamese" , "siam.cat@gmail.com" , 9 , 2129991234L, "NewCatadonia" , true ); Gson gson = new Gson(); String json = gson.toJson(user); System.out.println(json);  } 

类CatDetails

 /** * Java Program to map a Java object to JSON String using GSON library. */  class CatDetails { private String name; private String breed; private String email; private int catlives; private long phone; private String city; private boolean likesMice;  public CatDetails(String name, String breed, String email, int catlives, long phone, String city, boolean likesMice) { super (); this .name = name; this .email = email; this .catlives = catlives; this .phone = phone; this .city = city; this .likesMice = likesMice; this .breed = breed;  //getters & setters  public String getName() { return name;  }  public void setName(String name) { this .name = name;  }  public String getBreed() { return breed;  }  public void setBreed(String breed) { this .breed = breed;  }  public String getEmail() { return email;  }  public void setEmail(String email) { this .email = email;  }  public int getCatlives() { return catlives;  }  public void setCatlives( int catlives) { this .catlives = catlives;  }  public long getPhone() { return phone;  }  public void setPhone( long phone) { this .phone = phone;  }  public String getCity() { return city;  }   public void setCity(String city) { this .city = city;  }  public boolean isLikesMice() { return likesMice;  }  public void setLikesMice( boolean likesMice) { this .likesMice = likesMice;  }  } 

结果:

步骤3: 运行UseGSONapitoConvertJavaOBJtoJASONstring

 { "name" : "SiAm" , "breed" : "Siamese" , "email" : "siam.cat@gmail.com" , "catlives" : 9 , "phone" : 2129991234 , "city" : "NewCatadonia" , "likesMice" : true } 

使用JACKSON或GSON API,将Java Obj转换为JSON字符串很简单。

在我们的示例中,我们提供了使您可以轻松在IDE中重现的代码。

您需要做的只是:

  1. 创建一个新项目(建议使用Maven)
  2. 通过将依赖项添加到pom文件中,将 JAR文件包括 到您的类路径中。
  3. 建立课程
  4. 使用JACKSON API: ObjectMapper映射器类
    通过传递要转换为JSON的对象来调用writeValueAsString(ObjToConvert)方法
    要么
    使用GSON API: Gson类
      通过将要转换为JSON的对象传递给toJson(ObjToConvert)方法;

运行以将Java Obj转换为JSON字符串。


翻译自: https://www.javacodegeeks.com/2019/08/how-to-convert-a-java-object-into-a-json-string.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++迭代器(Iterator)详解

迭代器&#xff08;Iterator&#xff09;的介绍 背景&#xff1a; 指针可以用来遍历存储空间连续的数据结构&#xff0c;但是对于存储空间费连续的&#xff0c;就需要寻找一个行为类似指针的类&#xff0c;来对非数组的数据结构进行遍历。定义&#xff1a;迭代器是一种检查容器…

Java中的责任链设计模式

在本教程中&#xff0c;我们将学习如何在Java中实现责任链模式。 “责任链”设计模式涉及到拥有一系列负责处理请求的对象链。 当客户端发送请求时&#xff0c;第一个处理程序将尝试处理该请求。 如果可以处理&#xff0c;则请求处理在此结束。 但是&#xff0c;如果处理程序无…

硒测试可实现有效的测试自动化

尽管移动应用程序的市场份额有大幅增长&#xff0c;但网络应用程序仍然以大量的用户群为主导。 在部署之前&#xff0c;企业正在快速关注Web应用程序的质量。 这是测试发挥重要作用的地方。 与某些可以自动化的功能测试不同&#xff0c;UI测试仍然主要是手动过程。 但是将测试自…

C++ map用法总结(整理)

1&#xff0c;map简介 map是STL的一个关联容器&#xff0c;它提供一对一的hash。 第一个可以称为关键字(key)&#xff0c;每个关键字只能在map中出现一次&#xff1b;第二个可能称为该关键字的值(value)&#xff1b; map以模板(泛型)方式实现&#xff0c;可以存储任意类型的…

带有Spring Cloud Config和JHipster的Java微服务

朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户&#xff1f; 立即尝试Okta的API和Java SDK。 在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 如今&#xff0c;使用Java和Spring Boot开发微服务架构非常流行。 它绝对是Java生态系统中最…

如何在Java中使用Lombok删除样板安装程序获取器

你好朋友&#xff0c; 一次又一次反对Java的观点之一是&#xff0c;我们必须写很多样板 我们简单的POJO类的setter和getter形式的代码&#xff0c;不必要地增加了 我们代码的长度。 为了解决这个问题&#xff0c;有一个名为Project Lombok的开源项目可以解决这个问题。 通过…

Dev-C++使用技巧1(亲测)(超详细)(安装过程、修改语言、新建项目、配置C++ 11、开启警告信息和调试信息)

前言 Dev-C是一款内存占用小&#xff0c;支持C/C&#xff0c;支持调试&#xff0c;可以一键编译、运行的IDE&#xff08;集成开发环境&#xff09;。 下载链接&#xff1a;Dev-C - Download 如果上面那个不行或者下载比较慢&#xff0c;可以点链接: Dev-Cpp 提取码: xaby 。 …

从网络虚拟化,看智能网卡发展史

5G的到来无疑将加速网络虚拟化的进程&#xff0c;在电信领域&#xff0c;网络虚拟化不仅在核心网&#xff0c;也在网络的边缘。但是&#xff0c;仅仅通过软件解决方案不能提供足够的网络可靠性和服务质量&#xff0c;而具有高级可编程功能智能网卡&#xff08;Smart NIC&#x…

Dev-C++使用技巧2(亲测)(更改字体和颜色、自动保存、快捷键选项、一键排版)

更改字体和颜色 顶部菜单栏->工具->编辑器选项。 更改字体 当前选项卡->显示&#xff0c;字体word有的基本都有&#xff0c;华文楷体、宋体&#xff0c;幼圆之类。西文字体默认字体Consloas就不错&#xff0c;中文的话幼圆、新宋体都挺不错。 幼圆效果&#xff1…

深入浅出全面解析RDMA

RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问&#xff0c;就是为了解决网络传输中客户端与服务器端数据处理的延迟而产生的。它将数据直接从一台计算机的内存传输到另一台计算机&#xff0c;无需双方操作系统的介入。这允许高吞吐、低延迟的网络通信&#xff0c;…

hypervisor介绍

hypervisor&#xff1a;一种运行在物理服务器和操作系统之间的中间层软件&#xff0c;可以允许多个操作系统和应用共享一套基础物理硬件。可以将hypervisor看做是虚拟环境中的“元”操作系统&#xff0c;可以协调访问服务器上的所有物理设备和虚拟机&#xff0c;所以又称为虚拟…

Selenium WebDriver中的TestNG侦听器及示例

Java提供了不同的接口&#xff0c;使您可以修改TestNG行为。 这些接口在Selenium WebDriver中进一步称为TestNG侦听器。 TestNG Listeners还允许您根据项目要求自定义测试日志或报告。 Selenium WebDriver中的TestNG侦听器是侦听某些事件并跟踪测试执行情况的模块&#xff0c;…

Ubantu键盘快捷键

Ubuntu系统 长按"Win"键可打开快捷键提示界面

win10安装python详细过程

关于python的安装 一切语言皆为工具接下来咱们就开始吧一切语言皆为工具 既然你决定安装它&#xff0c;那就已经告知自己要掌握这门工具&#xff0c; 但是有一定你一定要铭记于心那就是&#xff1a; python 是个工具时刻想着如何用它解决你的问题【哪怕是一个简单的想法】 接…

第18次csp认证 201912-1 报数(C++)

题目 分析 需要跳过的包括&#xff1a;7的倍数和包括7的数。跳过的同时n要加一&#xff08;总的报n个数&#xff0c;跳过的不算&#xff09;。声明一个全局数组count[4]方法1&#xff1a;i1开始到n&#xff0c;把输入的i转化为字符串&#xff0c;然后在字符串里找’7’或者7的…

C++ vector求均值和方差

1 定义 &#xff08;1&#xff09;均值 &#xff08;2&#xff09;方差 &#xff08;3&#xff09;标准差 2 代码实现 //std::vector< double> 或者 std::vector< int> 类型变量求均值和方差 #include <numeric> #include <iostream> #include <m…

第18次csp认证 201912-2 回收站选址(C++)

题目 分析 每一个垃圾堆放处都可能是回收站&#xff0c;所以两轮循环&#xff0c;找出所有可以成为回收站的坐标。再两轮循环&#xff0c;确定所有回收站的得分最后输出每种得分的回收站个数 AC代码 #include <iostream> #include<string> using namespace std;…

Python——列表中存放字典遇到的问题

Python——列表中存放字典遇到的问题 使用列表、字典之间的相互嵌套可以很容易的实现json数据格式&#xff0c;但是昨天在往列表中装入字典时遇到了问题&#xff1a; 直接使用append方法将字典添加到列表中&#xff0c;如果需要更改字典中的数据&#xff0c;那么列表中的内容也…

pat 乙级 1036 跟奥巴马一起编程(C++)

题目 美国总统奥巴马不仅呼吁所有人都学习编程&#xff0c;甚至以身作则编写代码&#xff0c;成为美国历史上首位编写计算机代码的总统。2014 年底&#xff0c;为庆祝“计算机科学教育周”正式启动&#xff0c;奥巴马编写了很简单的计算机代码&#xff1a;在屏幕上画一个正方形…

Sublime删除所有包含特定值的行

1、选中包含的字符 2、全部选中包含这个字符&#xff1a; ALTF3 3、全选整行&#xff1a; 台式机&#xff1a;Shiftend 笔记本&#xff1a;ShiftFnend 4、删除所有数据&#xff1a; DELETE 5、删除所有空白行&#xff1a; 使用快捷方式直接删除空行&#xff0c;前提是进行如下…