JSON中的JSON.parseArray()、JSON.parseObject()、JSON.tojsonString()

1、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<Entity> arrList = JSON.parseArray(arrJson, Entity.class);

JSON.parseArray()

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

mysql是gplv3,Affero-GPL和GPLv3之间的区别

解决方案Assume the following:You are developing a server side application in GPL. Now this application serves HTML and not an executable which is directly executed on your machine. That means that another guy could take the GPL code, adapt it and does not …

mysql cluster proxy_GitHub - freedaxin/maya: a mysql cluster proxy powered by node.js

maya安装node.js依赖node v0.8最新版&#xff0c;暂不支持更高的node版本&#xff0c;此处以0.8.7版本为例。root安装(官方要求python2.5.2以上)tar -zxf node-v0.8.7.tar.gzcd node-v0.8.7./configure --prefix/usr/local/sinasrv2/makemake install在root环境变量中增加如下两…

常见HTTP状态码(200、301、302、500等)解说

对网站管理工作者来说有个词不陌生&#xff0c;HTTP状态码&#xff0c;它是用以表示网页服务器HTTP响应状态的3位数字代码。状态码的第一个数字代表了响应的五种状态之一。 1XX系列&#xff1a;指定客户端应相应的某些动作&#xff0c;代表请求已被接受&#xff0c;需要继续处…

linux c语言编写聊天室mysql_Linux平台上用C语言实现与MySQL数据库的连接

测试代码如下&#xff1a;//查询操作#include #include #include #define HOST "localhost"#define USERNAME "用户名"#define PASSWORD "密码"#define DATABASE "PublicResourcesDB"int main(void){MYSQL mysql;MYSQL_ROW row;MYSQL_…

java开发安装mysql_从零开始搭建Java开发环境第二篇:如何在windows10里安装MySQL

1 下载安装包1.1 压缩包[外链图片转存失败(img-oesO8K09-1566652568838)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw "点击并拖拽以移动")]1.2 安装包使用安装包安装则无需后续步骤[外链图片转存失败(img-Y3x59iO4-15666525…

java获取json中某个字段

import com.alibaba.fastjson.JSONObject; public class JsonTest {public static void main(String[] args) {// json串(以自己的为准)String str "{"id":"75","shoppingCartItemList":[{"id":"407","num"…

abap数据类型转换_ABAP 中JSON格式的转换与解析

正文RT&#xff0c;JSON是当今十分流行的一种轻量数据格式&#xff0c;广泛地应用于各种数据交换场景中。本文会介绍一种比较简单的将ABAP中的数据转换为JSON格式的方法。(如果你是因为引号的问题搜索到了这篇文章&#xff0c;请直接拉到底部“其它部分”)序列化使用cl_trex_js…

java解析多层嵌套json字符串

java解析多层嵌套json字符串 java分别解析下面两个json字符串 package jansonDemo;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject;public class TestJSON {/*** JSON实际上也是键值对&#xff08;"…

JVM中的五大内存区域划分详解

一、快速扫盲 1. JVM是什么 JVM是Java Virtual Machine的缩写&#xff0c;即咱们经常提到的Java虚拟机。虚拟机是一种抽象化的计算机&#xff0c;有着自己完善的硬件架构&#xff0c;如处理器、堆栈等&#xff0c;具体有什么咱们不做了解。目前我们只需要知道想要运行Java文件…

编写并调试一个单道处理系统的作业调度模拟程序_操作系统系列(2):操作系统发展历史...

用户需求的提升和硬件技术的发展&#xff0c;是操作系统发展的必要条件和基础。计算机的发展经历了4个阶段&#xff0c;电子管计算机(1945-1955)、晶体管计算机(1955-1965)、集成电路计算机(1965-1980)、大规模集成电路计算机(1980-至今)。因此&#xff0c;伴随着计算机硬件的更…

方法区元空间实现之jdk7和8字符串常量池、运行时常量池、静态变量到底在哪?

方法区&#xff08;落地实现jdk7永久代&#xff0c;jdk8元空间&#xff09;&#xff0c;元空间并不在虚拟机中&#xff0c;而是使用本地内存&#xff0c;它和堆在逻辑上是连续的&#xff0c;但在物理上是不连续的&#xff0c;所以也叫非堆。 1、此区域是线程共享的。储存已加载…

mysql force index报错_新特性解读 | MySQL 8.0 索引特性4-不可见索引

MySQL 8.0 实现了索引的隐藏属性。当然这个特性很多商业数据库早就有了&#xff0c;比如ORACLE&#xff0c;在11g中就实现了。我来介绍下这个小特性。介绍INVISIBLE INDEX&#xff0c;不可见索引或者叫隐藏索引。就是对优化器不可见&#xff0c;查询的时候优化器不会把她作为备…

关于Java成员变量、局部变量、方法,在JVM的内存空间分配

1、变量类型 2、类的结构 下面是一般类的结构 //类体属性状态&#xff08;即&#xff1a;类体变量方法&#xff09; public class 类名{ //类名最好首字母大写的英文String name; //在方法体外&#xff0c;所以是成员变量//下面是一个main方法(程序入口的主方法)public static…

python内置函数详解总结篇_Python内置函数详解——总结篇

数学运算(7个)类型转换(24个)序列操作(8个)对象操作(7个)反射操作(8个)变量操作(2个)交互操作(2个)文件操作(1个)编译执行(4个)装饰器(3个)数学运算abs&#xff1a;求数值的绝对值>>> abs(-2)2divmod&#xff1a;返回两个数值的商和余数>>> divmod(5,2)(2, 1…

Java多线程中static变量的使用

Java中 没处理好同步 导致两个线程同时为一个static变量赋值 会导致什么后果&#xff1f; Java中 没处理好同步 导致两个线程同时为一个static变量赋值 会导致什么后果&#xff1f;仅仅是多耗资源还是会引发异常&#xff1f; 不会耗资源 也不会引发异常 而是程序出现逻辑错误,…

scanf 接收 空格 输入_如何允许使用scanf输入空格?

人们(尤其是初学者)不应该使用scanf(“&#xff05;s”)或gets()或任何其他没有缓冲区溢出保护的函数&#xff0c;除非你确定输入总是一个特定的格式甚至不是)。记住&#xff0c;scanf代表“扫描格式化”&#xff0c;并且珍贵的格式比用户输入的数据少。如果您对输入数据格式具…

Java并发——线程安全

1、线程安全 多个线程对同一个共享变量进行读写操作时可能产生不可预见的结果&#xff0c;这就是线程安全问题。 故线程安全的核心点就是共享变量&#xff0c;只有在共享变量的情况下才会有线程安全问题。这里说的共享变量&#xff0c;是指多个线程都能访问的变量&#xff0c…

vue 功能模块后台可配置_Github14k的Springboot后台管理系统

关注爱编码、挖掘优秀项目。本期给各位带来的一款优质的后台管理系统&#xff1a;EL-ADMIN 后台管理系统。简介该项目由大神elunez一手大打造。它是一个基于 Spring Boot 2.1.0 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue的前后端分离的后台管理系统。项目地址&am…

hibernate mysql 时间_使用Hibernate和MySQL创建时间戳和最后更新时间戳

慕斯卡3215842利用本文中的资源以及从不同来源获得的左右信息&#xff0c;我提出了这个优雅的解决方案&#xff0c;创建了以下抽象类import java.util.Date;import javax.persistence.Column;import javax.persistence.MappedSuperclass;import javax.persistence.PrePersist;i…

Java中保证线程安全的三板斧

前言 现在&#xff0c;如果要使用 Java 实现一段线程安全的代码&#xff0c;大致有 synchronized 、 java.util.concurrent 包等手段。虽然大家都会用&#xff0c;但却不一定真正清楚其在 JVM 层面上的实现原理&#xff0c;因此&#xff0c;笔者在查阅了一些资料后&#xff0c…