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,一经查实,立即删除!

相关文章

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

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

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;伴随着计算机硬件的更…

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

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

Java多线程中static变量的使用

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

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 线程安全的原因_java的多线程:java安全问题产生的原因与JMM的关系

一、多线程产生安全问题 1、Java内存模型 共享内存模型指的就是Java内存模型(简称JMM)&#xff0c;JMM决定一个线程对共享变量的写入时,能对另一个线程可见。 从抽象的角度来看&#xff0c;JMM定义了线程和主内存之间的抽象关系&#xff1a; 线程之间的共享变量存储在主内存…

分布式系统全局唯一ID的几种实现方式

现如今可谓是微服务、分布式、IoT&#xff08;物联网&#xff09;横行的时代&#xff0c;作为一名开发者始终还是要保持一定的危机意识&#xff0c;特别是在日常的项目开发中&#xff0c;若是有机会接触到一些关于微服务、分布式下的应用场景&#xff0c;应当硬着头皮、排除万难…

git如何查看缓存区文件内容_详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别...

一、可以将git简单的分为三个区域 1、工作区(working directory) 2、暂缓区(stage index) 3、历史记录区(history) 如图&#xff1a;其中git add files 把当前工作目录中的文件放入暂存区域这其实做了两件事&#xff1a; 1、将本地文件的时间戳、长度&#xff0…

Java接口学习(接口的使用、简单工厂、代理模式、接口和抽象类的区别)

前言引入 官方解释&#xff1a;Java接口是一系列方法的声明&#xff0c;是一些方法特征的集合&#xff0c;一个接口只有方法的特征没有方法的实现&#xff0c;因此这些方法可以在不同的地方被不同的类实现&#xff0c;而这些实现可以具有不同的行为&#xff08;功能&#xff0…

最短路径 floyd java_java实现Floyd算法求最短路径

关于无向图的最短路径问题&#xff1a;这个程序输出&#xff1a;最短路径矩阵例如:W[0][5]9 代表vo->v5的最短路径为9W:0 1 3 7 4 91 0 2 6 3 83 2 0 4 1 67 6 4 0 3 24 3 1 3 0 59 8 6 2 5 0package com.xh.Floyd;import java.util.ArrayList;public class Floyd_01 {publi…

SpringBoot 使用 log4j2

一、新建工程 选择一些基础依赖 填写工程名称和项目路径 二、工程配置 修改文件编码格式 设置Java Compiler 修改maven配置文件路径 三、pom.xml的web依赖中排除掉logging依赖&#xff0c;并且引入log4j2依赖 <dependency><groupId>org.springframework.…

springBoot 通过使用log4j2

1.排除 Spring-boot-starter 默认的日志配置 将原本的 spring-boot-starter 改为 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>…

SpringBoot默认日志logback配置解析

SpringBoot默认日志logback配置解析 前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候&#xff0c;是带着下面几个问题来查资料的&#xff0c;你呢 如何引入日志&#xff1f;日志输出格式以及输出方式如何配置&#xff1f;代码中如何使用&#xff1f; 正文…

SpringBoot查看和修改依赖的版本

springBoot依赖管理&#xff1a; 1、引入父项目的作用是实现对所有依赖的管理。 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version> &l…

在IDEA中解决jar包冲突的神操作-必看

在开发过程中&#xff0c;经常会遇到导入jar包后jar包冲突的情况&#xff0c;大家也都知道&#xff0c;解决jar包冲突通常都比较麻烦&#xff0c;要找到多余的依赖&#xff0c;把低版本的依赖去掉。而大家通常能搜到IDEA解决jar包冲突的方法&#xff0c;应该是这样的&#xff1…