JsonNode、JsonObject常用方法
最近项目中要用json,闲暇时间,对json进行下总结。
1.JsonNode
- import com.fasterxml.jackson.core.JsonParseException;
- import com.fasterxml.jackson.databind.JsonMappingException;
- import com.fasterxml.jackson.databind.JsonNode;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import springfox.documentation.schema.Entry;
- import java.io.IOException;
- import java.util.*;
Json字符串
- String json = "{\"username\":\"tom\",\"company\":{\"companyName\":\"中华\",\"address\":\"北京\"},\"cars\":[\"奔驰\",\"宝马\"]"};
- String arrayJson = "[{\"number\":64,\"result\":\"SUCCESS\"},{\"number\":65,\"result\":\"FAILURE\"},{\"number\":66,\"result\":\"ABORTED\"},{\"number\":67,\"result\":\"SUCCESS\"}]";
Json字符串转换成JsonNode对象
- ObjectMapper mapper = new ObjectMapper();
- JsonNode jsonNode = mapper.readTree(json);
jsonNode的fieldNames方法是获取jsonNode的所有的key值
- Iterator<String> keys = jsonNode.fieldNames();
- while(keys.hasNext()){
- String key = keys.next();
- System.out.println("key键是:"+key);
- }
根据key值获取对应的值
- JsonNode path = jsonNode.path("username");
- JsonNode resultValue = jsonNode.findValue("username");
- JsonNode resultPath = jsonNode.findPath("username");
如果value为String,可以这样读取jsonNode的asText()方法获取到字符串,其他类型可以jsonNode.findValue("number").asInt();这几种方法都可以根据key获取到相应的值,匹配到一个就停止搜索。resultValue和resultPath的区别在于,如果没有匹配到任何key值为性别,resultValue为null,resultPath为空JsonNode,第一种的区别不是很清楚。
如果是一个JsonNode数组,使用jsonNode.elements();读取数组中每个node, 如果不是JsonNode数组,使用jsonNode.elements();返回jsonNode的values
- Iterator<JsonNode> elements = jsonNode.elements();
- while(elements.hasNext()){
- JsonNode node = elements.next();
- System.out.println(node.toString());
- }
取出所有key值为number的JsonNode的List
- List<JsonNode> findKeys = jsonNode.findParents("number");
- for (JsonNode result:findKeys){
- System.err.println(result.toString());
- }
取出所有key值为number对应的value(如果value中包含子jsonNode并且子jsonNode的key值也为number,是无法捕获到并加入list的)
- List<JsonNode> findValues = jsonNode.findValues("number");
- for(JsonNode value: findValues){
- System.out.println( value.toString());
- }
遍历某个JsonNode的key和value(value可能是字符串也可能是子jsonNode,但如果value是jsonNode数组的话,是无法读取的)
- Iterator<Map.Entry<String,JsonNode>> jsonNodes = jsonNode.fields();
- while (jsonNodes.hasNext()) {
- Map.Entry<String, JsonNode> node = jsonNodes.next();
- System.err.println("遍历获取key:"+node.getKey());
- System.err.println("遍历获取值:"+node.getValue().toString());
- }
如果是JDK1.8的话,可以这样遍历JsonNode的子节点
- jsonNode.forEach((JsonNode node)->{
- System.out.println("结果:"+node.toString());
- });
JsonNode对象转换成JSON字符串
- String jsonStr = mapper.writeValueAsString(jsonNode);
- System.out.println("JsonNode--->Json:"+jsonStr);
2.JsonObject( fastjson)
- String studentJson = "{\"stuId\":\"116\",\"stuName\":\"赵云\",\"stuAddress\":\"常山\",\"stuIQ\":\"93\"}";
- JSONObject object = JSON.parseObject(studentJson);
Student student = object.toJavaObject(Student.class);
Student stu = JSON.parseObject(studentJson,Student.class);
JsonObject对象根据key获取对应的值
String name = object.getString("stuName");
其他的常用方法
- public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
- public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
- public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
- public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
- public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
- public static final Object toJSON(Object javaObject); // 将JavaBean转换为JSONObject或者JSONArray。
JsonNode、JsonObject常用方法的更多相关文章
- objectMapper、JsonNode、JsonObject常用方法
一.objectMapper https://blog.csdn.net/han1196639488/article/details/79358743 二.JsonNode.JsonObject常用方 ...
- JsonObject、JsonArray操作json的个人总结
介绍 JsonObject.JsonArray之前,先介绍下JsonConfig JsonConfig: setClassMap(Map classMap)设置json属性类型,上json里的其中值为 ...
- fastjson、jackson以及son-lib的使用
fastjson前言 fastJson是阿里巴巴出品的一个json序列化工具. 引入依赖 <dependency> <groupId>com.alibaba</group ...
- 阿里巴巴fastJson进行json数据解析
1.生成JsonObject:将Java bean转换成易于处理和传输的strig的key value形式. 2.解析JsonObject:将收到的字符串转换成JsonObejct这种对象形式,Jso ...
- json数组的解析
一直以来,经常会遇到json数据从前端或者我经常从网站上爬取的数据中会有json数据的存在,这样如果想要获取json数据就需要对json数据进行解析 在开发过程中,经常需要和别的系统交换数据,数据交换 ...
- 如何实现Activiti的分支条件的自定义配置(转)
如何实现Activiti的分支条件的自定义配置 博客分类: Activiti Java SaaS 一.Activiti的流程分支条件的局限 Activiti的流程分支条件目前是采用脚本判断方式,并 ...
- FastJson中JSONObject用法及常用方法总结
本文为博主原创,未经允许不得转载: 最近一直有用到解析各种数据,主要是用FastJson进行数据解析,其中一个重要的类为JSONObject,今天有时间,所以进行总结一下: JSONobject是Fa ...
- postman的Testing examples(常用方法)
在实现接口自动测试的时候,会经常遇到接口参数依赖的问题,例如调取登录接口的时候,需要先获取登录的key值,而每次请求返回的key值又是不一样的,那么这种情况下,要实现接口的自动化,就要用到postma ...
- Newtonsoft—Json.NET常用方法简述
Json.NET常用方法汇总(可解决日常百分之90的需求) 0.Json.NET基础用法 首先去官网下载最新的Newtonsoft.Json.dll(也可以使用VS自带的NuGet搜索Json.NET ...
随机推荐
- [Webpack] Create Separate webpack Configs for Development and Production with webpack-merge
The development and production modes in webpack optimize the output in different ways. In developmen ...
- C++ 生成
1.重新生成,会导致所有cpp文件重新编译,然后连接. 2.使用生成,只会对需要重新编译的cpp文件,进行编译. a.修改cpp文件方法实现,只需要重新编译该cpp文件 b.修改h文件的接口部分,包含 ...
- PHP XML Parser函数
PHP XML Parser 函数 PHP XML Parser 简介 XML 函数允许您解析 XML 文档,但无法对其进行验证. XML 是一种用于标准结构化文档交换的数据格式.您可以在我们的 XM ...
- UNIX网络编程读书笔记:地址操纵函数
地址格式转换函数:它们在ASCII字符串(人们比较喜欢用的格式)与网络字节序的二进制值(此值存于套接口地址结构中)间转换地址. 1.inet_aton.inet_addr.inet_ntoa inet ...
- XMPP协议实现即时通讯底层书写 (二)-- IOS XMPPFramework Demo+分析
我希望,This is a new day! 在看代码之前,我认为你还是应该先整理一下心情,来听我说几句: 首先,我希望你是在早上边看这篇blog,然后一边開始动手操作,假设你仅仅是看blog而不去自 ...
- 发布WebService 1.1
webservice1.1是基于jdk发布的 package cn.itcast.service01; import javax.jws.WebService; import javax.xml.ws ...
- 一对一关系数据库表 java类描述
一对一关系中 从表的主键是 主表的外键 sql语句 create table person( id int primary key, name varchar(100) ); create table ...
- Asp.Net Core + SignalR 实现实时通信
一.搭建项目 1.创建一个ASP.NET Core MVC 项目 2.nuget 下载和安装 MicroSoft.AspNetCore.SignalR vs提示版本冲突 这时我们选择低版本即可 二.S ...
- 将 数据从数据库 直接通过 pyspark 读入到dataframe
from pyspark.sql import SparkSession spark = SparkSession \ .builder \ .appName("Python Spark S ...
- Go语言核心之美 4.3-多返回值
在Go语言中.函数能够有多个返回值,这个特性我们已经在之前的样例见过非常多,非常多标准库函数都会返回两个值,一个是期望得到的函数执行结果,另外一个是函数出错时的错误值. 以下的程序是findlinks ...