Java Json字符串或Json对象属性查找工具类
给定参数Json字符串或者是Json对象,和需要查找的属性的key值,调用方法后可以获取到对应属性的值的FinalFastJsonObject对象,然后根据需要获取对象的值。
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;import java.io.Serializable;/*** json查找类*/
@Data
public class FinalFastJsonObject implements Serializable {private static final long serialVersionUID = 1L;private Object object;private boolean isArray;public JSONArray getJSONArray() {return (JSONArray) object;}public JSONObject getJSONObject() {return (JSONObject) object;}public String getValue() {return (String) object;}public Object getObjectValue() {return object;}public boolean isNullOrBlankValue() {if (object == null) {return true;}if (object instanceof String) {return StringUtils.isBlank((String) object);}return false;}}
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;/*** 仅适用于查找唯一的属性*/
@Slf4j
public class FindFastJsonUtil {public static FinalFastJsonObject findJsonKeyOnlyObject(String fullResponseJson, String key) {FinalFastJsonObject finalObject = new FinalFastJsonObject();findOnlyObject(JSONObject.parseObject(fullResponseJson), key, finalObject);return finalObject;}public static FinalFastJsonObject findKeyOnlyObject(JSONObject fullResponse, String key) {FinalFastJsonObject finalObject = new FinalFastJsonObject();findOnlyObject(fullResponse, key, finalObject);return finalObject;}/*** 从json中查找对象** @param fullResponse json对象* @param key json key* @param finalObject 传入的固定对象*/private static void findOnlyObject(JSONObject fullResponse, String key, FinalFastJsonObject finalObject) {if (fullResponse == null) {return;}fullResponse.keySet().forEach(keyStr -> {Object keyvalue = fullResponse.get((String) keyStr);if (keyvalue instanceof JSONArray) {if (key.equals(keyStr)) {finalObject.setArray(true);finalObject.setObject(keyvalue);} else {for (int i = 0; i < ((JSONArray) keyvalue).size(); i++) {Object obj = ((JSONArray) keyvalue).get(0);if (obj instanceof JSONObject) {findOnlyObject(((JSONObject) obj), key, finalObject);}}}} else if (keyvalue instanceof JSONObject) {if (key.equals(keyStr)) {finalObject.setObject(keyvalue);} else {findOnlyObject((JSONObject) keyvalue, key, finalObject);}} else {if (key.equals(keyStr)) {finalObject.setObject(keyvalue);}}});}
}
Java Json字符串或Json对象属性查找工具类相关推荐
- Java通用工具类之按对象属性排序工具类
本工具类为按对象属性排序工具类,实现的功能: 1.按对象的一个属性和多个属性进行排序. 2.按对象属性正序和倒序排列. 3.完美支持int等基础类和Integer等包装类. 4.完美支持属性为实现了C ...
- java json转抽象对象_做一次面向对象的体操:将 JSON 字符串转换为嵌套对象的一种方法...
原标题:做一次面向对象的体操:将 JSON 字符串转换为嵌套对象的一种方法 来源:琴水玉 , www.cnblogs.com/lovesqcc/p/9478678.html 程序员共读整理发布,转载请 ...
- java字符串转json取集合_Java中Json字符串直接转换为对象的方法(包括多层List集合)...
使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...
- java list 对象 json字符串_Java中Json字符串直接转换为对象的方法(包括多层List集合)...
使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...
- json字符串转json对象(前端json字符串转json对象)
小弟我如何把二进制data转换成json字符串 我举个例子,转json用的是fastjson,如附件.ArrayListobj=newArrayList();ArrayListuh=newArrayL ...
- Json对象和Json字符串以及js对象(JavaScript对象)的区别
1.Json概念 概念:JSON (JavaScript Object Notation) 一种简单的数据格式,是一种比较轻量级的数据存储格式: 2.Json与JS对象的对比 区 别 JSON Jav ...
- 一文教你json字符串与JavaBean对象如何相互转换
工作中经常会遇到在复杂的业务场景中,将数据持久化时某个字段存储的是json字符串,取出数据进行操作时,不能直接对json字符串进行操作,能操作的是JavaBean对象. 或者调用其他的服务(Java应 ...
- Jackson使用:String 与对象互转、Jackson 从 json 字符串转换出对象
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.从json字符串转换出对象 Pager类: import com.fasterxml.jacks ...
- json字符串,JSONObject对象,JavaBean对象互转。
包名:import net.sf.json.JSONObject; 1.maven地址 <dependency> <groupId>net.sf.json-lib</gr ...
- 多层json字符串转map_Java中Json字符串直接转换为对象的方法(包括多层List集合)
使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...
最新文章
- DayDayUp:昨天用微信发朋友圈—发现微信出现一点点Bug记录
- 【Flask】Jinja2之测试器的应用
- Java线程池原理及使用
- word域变成正常文本_【Word小技巧】不学会后悔哦~
- 前端小插件之手写js循环滚动特效
- java compareto方法怎么排序的_很简单却能让你面试头疼得Java容器,这里从源码给你解释清楚
- CentOS单用户模式及进入后只读处理,开机修改为文字界面
- 基于Doxygen的C/C++注释原则
- 教你如何防止网站被挂马!
- python3.X出现关于模块(i18n)的不能使用的解决方法
- QQ模拟自动登录实现
- 手把手教会使用YOLOv5训练VOC2007数据集
- 【NLP基础理论】 08 词汇语义学 Lexical Semantics
- 最优化算法---可行方向之Frank-wolfe 方法(求解非线性规划问题)
- linux嵌入式工控机编程,Linux嵌入式工控机的特点
- 陆金所杨晓军:金融与区块链结合将…
- BitCoin p2p通信过程
- 电脑重装系统,微信备份与恢复聊天记录,保存的文件。微信聊天记录迁移
- 手撸架构,Kafka 面试42问
- java学习笔记day09 final、多态、抽象类、接口
热门文章
- rk3399_android7.1调试USB接口的TP记录
- stringbuffer字符串反转操作
- 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice
- Ctrl+F5为强制刷新
- java处理日期时间代码
- Linux内核Makefile编译生成内核目标文件的过程
- [SQL Server] Access和SQL Server的数据迁移
- Linux Web基础
- java 断点跳到注释,给注解打断点的一种方法
- vue项目关于:Error: Cannot find module ‘D:\@vue\cli-service\bin\vue-cli-service.js‘的解决方案