多层嵌套json解析-- com.jayway.jsonpath.JsonPath

public class FormDefineHelper {private FormDefineHelper() {}private static final Configuration CONFIGURATION = Configuration.builder().options(Option.SUPPRESS_EXCEPTIONS, Option.DEFAULT_PATH_LEAF_TO_NULL).build();public static Map<String, Arguments> resolveToArguments(InputStream inputStream) {//@formatter:offMap<String, Arguments> map = new TreeMap<>();DocumentContext documentContext = JsonPath.using(CONFIGURATION).parse(inputStream);JSONArray nodes = documentContext.read("$.schema");if (nodes == null) {return map;}parseNode(map, nodes);return map;//@formatter:on}private static void parseNode(Map<String, Arguments> map, JSONArray nodes) {for (Object node : nodes) {DocumentContext context = JsonPath.using(CONFIGURATION).parse(node);Object code = context.read("@.__vModel__");if (code == null || code.toString().length() == 0) {continue;}String name = context.read("@.__config__.label");Boolean required = context.read("@.__config__.required");String fieldType = context.read("@.__config__.fieldType");/*string: STRING  TEXT RADIO SELECT CHECKBOX SWITCHint:    INTFILE  refDATEDATETIME*/Object defaultValue = context.read("@.__config__.defaultValue");Arguments arguments = new Arguments().withCode(code.toString()).withName(name).withBelongsType(Arguments.BelongsType.FACTOR).withDefaultValue(defaultValue + "").withNotNull(Boolean.TRUE.equals(required) ? Arguments.NotNull.YES : Arguments.NotNull.NO).withType(transferToArgumentsType(fieldType)).withScope(Arguments.Scope.PRIVATE).withAdditionalProperty("fieldType", fieldType);map.put(arguments.getCode(), arguments);JSONArray children = context.read("@.__config__.children");if (children != null) {// 递归解析 --> children节点parseNode(map, children);}}}private static Arguments.Type transferToArgumentsType(String type) {if (type == null) {return Arguments.Type.STRING;}switch (type) {case "INT":return Arguments.Type.INT;case "FILE":return Arguments.Type.REF;case "DATE":return Arguments.Type.DATE;case "DATETIME":return Arguments.Type.DATETIME;case "TIME":return Arguments.Type.TIME;case "STRING":case "TEXT":case "RADIO":case "SELECT":case "CHECKBOX":case "SWITCH":return Arguments.Type.STRING;default:return Arguments.Type.valueOf(type);}}
}

多层嵌套json解析相关推荐

  1. java解析多层嵌套json字符串

    java解析多层嵌套json字符串 java分别解析下面两个json字符串 package jansonDemo;import com.alibaba.fastjson.JSON; import co ...

  2. 多层嵌套json转换为Map再转换为单层

    多层嵌套json转换为Map再转换为单层 最近在实习的时候,需要将多层嵌套的json转换为单层的json.并且把json进行格式化.于是参照网上的网上的方法使用谷歌的gson利用递归的实现了多层jso ...

  3. ASP.NET提取多层嵌套json数据的方法

    ASP.NET提取多层嵌套json数据的方法 本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下. 假设需要提取的json字符串如下: ...

  4. 迭代解决多层嵌套json 转map

    最近工作需要用到json 转map ,在网上看到了一个方法,但并不能解决多层嵌套json,在此对这个方法进行了迭代处理,解决这个问题 import net.minidev.json.{JSONObje ...

  5. python 处理json多层嵌套_python解析多层嵌套json

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 这样多层json结构已完成. 补充拓展:python 读取多层嵌套的json数据 ...

  6. mysql获取多层嵌套json_提取多层嵌套Json数据

    在.net 2.0中提取这样的json {"name":"lily","age":23,"addr":{"ci ...

  7. Python数据处理Tips多层嵌套Json数据展平到DataFrame

    在工作中需要处理嵌套数据(尤其是无模式的 MongoDB 日志等)或者是网络爬虫抓取下来的多层嵌套数据需要展平处理. 如果将它放在 BigQuery 中则很容易通过使用 WITHIN 等的查询将其更改 ...

  8. Hive中解析Json字段、json日志分析所用到的嵌套json解析

    首先在百度搜索,json格式解析,将这段话变个格式看起来舒服. 然后,通过通过嵌套使用json函数解决.大概就是将内层的json字段当作一个整体,然后先将这个外层作为解析.在通过子查询使用方法,在外套 ...

  9. python 多层嵌套 json_python解析多层json操作示例

    本文实例讲述了python解析多层json操作.分享给大家供大家参考,具体如下: 原始文件内容: { "MaskPolygonItem": { "0": { & ...

最新文章

  1. double取整数部分_剑指offer_16_数值的整数次方
  2. R语言dplyr包mutate_all函数一次性处理所有的数据列的内容(使用统一的函数)实战
  3. php验证用户名密码是否为空,【后端开发】php验证用户名密码是否为空
  4. python 中参数 ,解包和变量的入门
  5. [js] Geolocation.getCurrentPosition()用来做什么的?在什么浏览器不受兼容?
  6. MFC_2.2 编辑框和文本控件
  7. visualvm远程监控jvm_别再说你不会 JVM 性能监控和调优了,看完这篇再发言
  8. 解决异常:公共语言运行时检测到无效的程序
  9. jflash合并bin文件
  10. brctl 命令详解
  11. javascript重定向的方法和区别
  12. 如何正确认识和提升自己的格局
  13. 蚂蚱跳跃问题 【字节笔试】题目说 ”字节“跳动
  14. firebox - firebug, 解析json,httpRequest模拟请求等插件
  15. 毕业论文知识点记录(四)——MaxEnt模型
  16. 关于虚拟机无法启动(The VMware Authorization Service is not running)
  17. 运算放大器单电源供电和双电源供电
  18. 项目中项目评估概述及原则
  19. 华恩JAVA班第22天
  20. 8Lua从入门到精通-王桂林-专题视频课程

热门文章

  1. 上海著名综合性商厦一览
  2. 单例模式饿汉式与懒汉式详解
  3. 图片怎么转到Word格式?这些方法学习一下
  4. 抵制仙人跳!中关村JS现身说法 《村口FM》第四期上线
  5. 【高级数据库】第一章 第02讲 DBMS概述
  6. 【Qt】【怪事】安装目录少一级引发的各种报错
  7. SQL 数据库 学习 003 什么是数据库? 为什么需要数据库?是不是所有的软件都是用Sql Server?
  8. Chapter One:学习 Chrome 开发者工具
  9. Java篇 - 随机数的原理、伪随机和优化
  10. 《医学成像原理》——4.超声成像的知识总结