JSON中的JSON.parseArray()方法、JSON.parseObject()方法和JSON.tojsonString()方法

1、JSON.JSON.parseObject和JSON.toJSONString

JSON.parseObject,是将Json字符串转化为相应的对象;JSON.toJSONString则是将对象转化为Json字符串。在前后台的传输过程中,JSON字符串是相当常用的,这里就不多介绍其功能了,直接举一下应用的小例子,帮助理解这两个方法的用法。

首先用maven引入fastjson

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.wujiang.test</groupId><artifactId>test</artifactId><version>1.0-SNAPSHOT</version><properties><fastjson_version>1.2.28</fastjson_version></properties><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson_version}</version></dependency></dependencies>
</project>

定义一个model类,员工,有四个属性,如下所示:

ackage jsonTest;import java.util.Date;public class Staff {private String name;private Integer age;private String sex;private Date birthday;//省略getter和setter方法@Overridepublic String toString() {return "Staff{" +"name='" + name + '\'' +", age=" + age +", sex='" + sex + '\'' +", birthday=" + birthday +'}';}
}

好的,下一步,测试一下JSON.parseObject 和 JSON.toJSONString方法。这里故意在Json字符串中多了一个telephone,少了一个Staff中的birthday,看看输出的对象会有什么变化

package jsonTest;import com.alibaba.fastjson.JSON;public class jsonTest {public static void main(String[] args) {/*** json字符串转化为对象*/String jsonString = "{name:'Antony',age:'12',sex:'male',telephone:'88888'}";Staff staff = JSON.parseObject(jsonString, Staff.class);System.out.println(staff.toString());/*** 对象转化为json字符串*/String jsonStr = JSON.toJSONString(staff);System.out.println(jsonStr);}
}

输出结果

Staff{name='Antony', age=12, sex='male', birthday=null}{"age":12,"name":"Antony","sex":"male"}
//如果age是String类型,那么输出结果变为
//{"age":"12","name":"Antony","sex":"male"}

在JSON.parseObject 的时候,会去填充名称相同的属性。对于Json字符串中没有,而model类有的属性,会为null;对于model类没有,而Json字符串有的属性,不做任何处理。

至于 JSON.toJSONString 就不需要多说了,看一下就知道

至于应用场景,比方说,用户登录微信公众号的时候,调用微信官方的restful接口,得到该用户的所有信息的一个Json字符串,然后写一个类(将自己需要的信息封装成一个类)。例如下面的伪代码

String s = httpRequest.sendGet("https://api.weixin.qq.com/sns/oauth2/access_token","appid=" + appId + "&secret=" + appSecret + "&code=" + code + "&grant_type=authorization_code");UserAuthorizationReturn userAuthorizationReturn = JSON.parseObject(s, UserAuthorizationReturn.class);

2、JSON.parseArray

这个方法的作用就是将json格式的数据转换成数组格式。

假设有Person这个类,有json类型数据jsonStr = [{“name”:“张三”,“age”:“1”},{“name”:“李四”,“age”:“4”}],那么List lists = json.parseArray(jsonStr, Person.class);lists就可以接收jsonStr了

三者区别:

1、toJSONString

String str = JSON.toJSONString(Entity);

2、parseObject

Entity toObj = JSON.parseObject(str, Entity.class);

3、parseArray

String arrJson = JSON.toJSONString(entityList);

List arrList = JSON.parseArray(arrJson, Entity.class);

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

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

相关文章

java数组更新_java刷新数组到jList

好吧&#xff0c;所以我有一个JList和内容提供了一个数组。我知道如何将元素添加到数组&#xff0c;但我想知道如何刷新JList ...或者甚至有可能吗&#xff1f;我试过谷歌。 &#xff1a;\java刷新数组到jListimport java.applet.Applet;import java.awt.*;import javax.swing.…

事务及事务隔离级别

什么是事务 事务是访问数据库的一个操作序列&#xff0c;数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换为另一种状态。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性&#xff08;atomicity&#xff09;、一致性&#xff08;…

java类加载的搜索顺序_Java类加载器加载类顺序

java ClassLoader的学习java是一门解释执行的语言&#xff0c;由开发人员编写好的java源文件先编译成字节码文件.class形式&#xff0c;然后由java虚拟机(JVM)解释执 行&#xff0c;.class字节码文件本身是平台无关的&#xff0c;但是jvm却不是&#xff0c;为了实现所谓的一次编…

HTTP 必备干货学习,一篇HTTP入门 不收藏都可惜!

文章目录&#x1f4e2;前言HTTP 必备干货学习&#xff0c;程序员不懂网络怎么行HTTP 协议五个特点&#xff1a;网络结构图解HTTP概述&#x1f3f3;️‍&#x1f308;基于 HTTP 的系统的组件客户端&#xff1a;用户代理网络服务器代理HTTP 的基本方面HTTP 很简单HTTP 是可扩展的…

在别人发来的文章上修改时,出现红色且带下划线的情况

这是因为一些比较严谨的机构将模板发过来在你修改的时候会出现特殊标记&#xff08;比如律师行业&#xff09; 这里想要直接在他的文档上进行修改&#xff0c;需要取消掉原来的修订配置 再次输入格式消失

java抽象类重载_在JAVA中使用一个抽象方法的重载方法

给出一个抽象类public abstract class AbstractStomach {public abstract void consume(Food food);}我想要一些具有不同重载方法的具体类&#xff1a;public class FruitStomach extends AbstractStomach {public static class Apple extends Food {}public static class Oran…

java in out 参数_总是避免Java中的in-out参数?

毫无疑问,输入输出参数会导致代码混乱,因为它们可能会增加意外/不可预测的副作用.所以,许多优秀的程序员说:避免使用in-out参数来更改可变方法参数.希望保持参数不变.对于一个完美主义程序员来说,他希望他的代码是最干净和最容易理解的,那么这个"规则"是否必须适用于…

谈Servlet与JSP

文章目录前言正文1、什么是JSP?2、什么是Servlet&#xff1f;3、JSP与Servlet的区别和联系4、扬长弊端提出MVC前言 提高Java Web 开发&#xff0c;不得不说http协议&#xff0c;接下来就说Servlet 和 Jsp 这两个java类。 正文 1、什么是JSP? JSP(Java Server Pages)是Sun…

java 记事本编译_肿么用记事本编译运行java程序代码?

确认已经正确安装JDK。(cmd->输入javac&#xff0c;然后回车&#xff0c;出现一堆东西&#xff0c;下面的东西)C:\Users\lenovo>javac用法: javac 其中, 可能的选项包括:-g 生成所有调试信息-g:none 不生成任何调试信息-g:{lines,vars,source} 只生成某些调试信息-nowarn…

Jsp和Servlet有什么区别?

文章目录什么是Servlet&#xff1f;为什么要用到Servlet&#xff1f;什么是JSP为什么需要JSPJSP的工作原理什么是Servlet&#xff1f; Servlet其实就是一个遵循Servlet开发的java类。Servlet是由服务器调用的&#xff0c;运行在服务器端。 为什么要用到Servlet&#xff1f; …

hdfs java api 权限_HDFS Java API 详解

Hadoop版本&#xff1a; Hadoop 2.6.0连接HDFSString URL"hdfs://hadoop001:9000";Configuration conf new Configuration();conf.set("fs.defaultFS", URL);FileSystem fs FileSystem.get(conf);上传文件到HDFS//获取本地文件的输入流FileInputStream …

Tomcat就是这么简单

什么是Tomcat Tomcat简单的说就是一个运行JAVA的网络服务器&#xff0c;底层是Socket的一个程序&#xff0c;它也是JSP和Serlvet的一个容器。 为什么我们需要用到Tomcat 如果你学过html&#xff0c;css&#xff0c;你会知道你写的页面只能自己访问&#xff0c;别人不能远程访…

java if两个条件_java(3) if结构

一、基本if结构1、流程图1)输入输出2)判断和分支3) 流程线1.1 简单的if条件判断if(表达式){//表达式为true&#xff0c;执行&#xff5b;&#xff5d;中的代码}示例1&#xff1a;如果张三的Java成绩大于98分&#xff0c;那么老师奖励他一个MP4。1 public classPractice1 {2 pu…

Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

什么是Servlet&#xff1f; Servlet其实就是一个遵循Servlet开发的java类。Servlet是由服务器调用的&#xff0c;运行在服务器端。 为什么要用到Servlet&#xff1f; 我们编写java程序想要在网上实现 聊天、发帖、这样一些的交互功能&#xff0c;普通的java技术是非常难完成…

java kafka 分区_Java kafka如何实现自定义分区类和拦截器

生产者发送到对应的分区有以下几种方式&#xff1a;(1)指定了patition&#xff0c;则直接使用&#xff1b;(可以查阅对应的java api, 有多种参数)(2)未指定patition但指定key&#xff0c;通过对key的value进行hash出一个patition&#xff1b;(3)patition和key都未指定&#xff…

Servlet第三篇【request和response简介、response的常见应用】

response、request对象 Tomcat收到客户端的http请求&#xff0c;会针对每一次请求&#xff0c;分别创建一个代表请求的request对象、和代表响应的response对象 既然request对象代表http请求&#xff0c;那么我们获取浏览器提交过来的数据&#xff0c;找request对象即可。respon…

strip string java_Java StringUtils.strip方法代码示例

import org.apache.commons.lang.StringUtils; //导入方法依赖的package包/类public static void copyResourceFolder(String resourceFolder, String destDir)throws IOException {final File jarFile new File(Util.class.getProtectionDomain().getCodeSource().getLocatio…

spring三种注入方式

设置Spring的作用域 或者使用枚举值设置 单例和多里使用场景 自动注入 Primary 一个接口有多个实现被spring管理吗&#xff0c;在依赖注入式&#xff0c;spring会不知道注入哪个实现类就会抛出NoUniqueBeanDefinitionException异常 使用Primary 来告诉Spring 注入哪个实现…

java虚拟机1.7_《Java虚拟机原理》7.1 精选 —— 总览

1.一个程序在 JVM 中运行的完整流程java程序执行流程.JPG说明&#xff1a;① 类加载器把字节码加载到方法区② 方法区的字节码被 JVM new&#xff0c;在堆内存中生成字节码对象③ 字节码对象被 GC 的要求有&#xff1a;该类没有在其他任何地方被引用&#xff1b;该类的所有的实…

Servlet第四篇【request对象常用方法、应用】

什么是HttpServletRequest HttpServletRequest对象代表客户端的请求&#xff0c;当客户端通过HTTP协议访问服务器时&#xff0c;HTTP请求头中的所有信息都封装在这个对象中&#xff0c;开发人员通过这个对象的方法&#xff0c;可以获得客户这些信息。 简单来说&#xff0c;要…