给定参数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对象属性查找工具类相关推荐

  1. Java通用工具类之按对象属性排序工具类

    本工具类为按对象属性排序工具类,实现的功能: 1.按对象的一个属性和多个属性进行排序. 2.按对象属性正序和倒序排列. 3.完美支持int等基础类和Integer等包装类. 4.完美支持属性为实现了C ...

  2. java json转抽象对象_做一次面向对象的体操:将 JSON 字符串转换为嵌套对象的一种方法...

    原标题:做一次面向对象的体操:将 JSON 字符串转换为嵌套对象的一种方法 来源:琴水玉 , www.cnblogs.com/lovesqcc/p/9478678.html 程序员共读整理发布,转载请 ...

  3. java字符串转json取集合_Java中Json字符串直接转换为对象的方法(包括多层List集合)...

    使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...

  4. java list 对象 json字符串_Java中Json字符串直接转换为对象的方法(包括多层List集合)...

    使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...

  5. json字符串转json对象(前端json字符串转json对象)

    小弟我如何把二进制data转换成json字符串 我举个例子,转json用的是fastjson,如附件.ArrayListobj=newArrayList();ArrayListuh=newArrayL ...

  6. Json对象和Json字符串以及js对象(JavaScript对象)的区别

    1.Json概念 概念:JSON (JavaScript Object Notation) 一种简单的数据格式,是一种比较轻量级的数据存储格式: 2.Json与JS对象的对比 区 别 JSON Jav ...

  7. 一文教你json字符串与JavaBean对象如何相互转换

    工作中经常会遇到在复杂的业务场景中,将数据持久化时某个字段存储的是json字符串,取出数据进行操作时,不能直接对json字符串进行操作,能操作的是JavaBean对象. 或者调用其他的服务(Java应 ...

  8. Jackson使用:String 与对象互转、Jackson 从 json 字符串转换出对象

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.从json字符串转换出对象 Pager类: import com.fasterxml.jacks ...

  9. json字符串,JSONObject对象,JavaBean对象互转。

    包名:import net.sf.json.JSONObject; 1.maven地址 <dependency> <groupId>net.sf.json-lib</gr ...

  10. 多层json字符串转map_Java中Json字符串直接转换为对象的方法(包括多层List集合)

    使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-b ...

最新文章

  1. DayDayUp:昨天用微信发朋友圈—发现微信出现一点点Bug记录
  2. 【Flask】Jinja2之测试器的应用
  3. Java线程池原理及使用
  4. word域变成正常文本_【Word小技巧】不学会后悔哦~
  5. 前端小插件之手写js循环滚动特效
  6. java compareto方法怎么排序的_很简单却能让你面试头疼得Java容器,这里从源码给你解释清楚
  7. CentOS单用户模式及进入后只读处理,开机修改为文字界面
  8. 基于Doxygen的C/C++注释原则
  9. 教你如何防止网站被挂马!
  10. python3.X出现关于模块(i18n)的不能使用的解决方法
  11. QQ模拟自动登录实现
  12. 手把手教会使用YOLOv5训练VOC2007数据集
  13. 【NLP基础理论】 08 词汇语义学 Lexical Semantics
  14. 最优化算法---可行方向之Frank-wolfe 方法(求解非线性规划问题)
  15. linux嵌入式工控机编程,Linux嵌入式工控机的特点
  16. 陆金所杨晓军:金融与区块链结合将…
  17. BitCoin p2p通信过程
  18. 电脑重装系统,微信备份与恢复聊天记录,保存的文件。微信聊天记录迁移
  19. 手撸架构,Kafka 面试42问
  20. java学习笔记day09 final、多态、抽象类、接口

热门文章

  1. rk3399_android7.1调试USB接口的TP记录
  2. stringbuffer字符串反转操作
  3. 基于JAX-WS的Web Service服务端/客户端 ;JAX-WS + Spring 开发webservice
  4. Ctrl+F5为强制刷新
  5. java处理日期时间代码
  6. Linux内核Makefile编译生成内核目标文件的过程
  7. [SQL Server] Access和SQL Server的数据迁移
  8. Linux Web基础
  9. java 断点跳到注释,给注解打断点的一种方法
  10. vue项目关于:Error: Cannot find module ‘D:\@vue\cli-service\bin\vue-cli-service.js‘的解决方案