需求:针对复杂JSON数据的,多个特定节点的特定值进行批量加值,其他节点的不能动。

1. 使用fastjson的JsonObject,修改HashMap为LinkedHashMap使用链表,保证顺序一致。

    private static String jsonFilter(String sFilter) {JSONObject jsonObj = new JSONObject(new LinkedHashMap());JSONObject oFilter = jsonObj.parseObject(sFilter);oFilter = jsonLoop(oFilter);return oFilter.toString();}

2. 迭代到我们需要的节点,对value进行的逻辑处理,处理完成后改值。

    public static JSONObject jsonLoop(Object object) {JSONObject jsonObject = null;if (object instanceof JSONObject) {jsonObject = (JSONObject) object;Iterator<Map.Entry<String, Object>> iterator = jsonObject.entrySet().iterator();while (iterator.hasNext()) {Map.Entry<String, Object> en = iterator.next();String k = en.getKey();Object v = en.getValue();if (k.equals("code") || k.equals("modelUpdated")) {v = regFilter(v);                    jsonObject.put(k, v);} else {jsonLoop(v);}}}if (object instanceof JSONArray) {JSONArray jsonArray = (JSONArray) object;for (int i = 0; i < jsonArray.size(); i++) {jsonLoop(jsonArray.get(i));}}return jsonObject;}

3. 处理逻辑, 正则分组遍历,对特定节点下命中的字段加3。

    private static Object regFilter(Object v) {String vFilter = v.toString();Pattern p = Pattern.compile("(Hay-01[3-6]-)([0-9]{3})");Matcher m = p.matcher(vFilter);//注意:996-999须另作处理while (m.find()) {int g1 = Integer.parseInt(m.group(2));g1 += 3;String num = String.format("%03d", g1);String rep = m.group(1) + num;vFilter = vFilter.replaceAll(m.group(), rep);}return (Object) vFilter;}

java迭代器遍历json,批量替换内容相关推荐

  1. Java递归遍历JSON的N叉树数据结构

    JSON的N叉树数据结构如下: {"code": 0,"data": [{"name": "xxx","uui ...

  2. java迭代器遍历list_使用Java中的迭代器遍历ArrayList

    迭代器可用于遍历ArrayList.如果ArrayList中有更多元素,则hasNext()方法返回true,否则返回false.next()方法返回ArrayList中的下一个元素,如果没有下一个元 ...

  3. word 文档操作类,可以读出word中书签 批量替换内容,直接调用

    using System; using System.Collections.Generic; using System.Text; using Word = Microsoft.Office.Int ...

  4. JAVA迭代器遍历与删除

    package com; //迭代器import java.util.ArrayList; import java.util.Collection; import java.util.Iterator ...

  5. java迭代器遍历中删除对象

    当我们在遍历集合的过程中想移除一个元素的时候,如果不用迭代器的话,可以直接根据下标将元素移除: List<String> list = Lists.newArrayList("a ...

  6. ant批量处理word文件内容_word多个文件批量替换内容

    Sub CommandButton1_Click() Application.ScreenUpdating = False  '关闭屏幕闪 Dim myFile$, myPath$, i%, myDo ...

  7. mysql批量修改http为https,墨涩网 - typecho系统升级全站https数据库批量替换网址/内容——墨涩网...

    我们的网站需要批量替换内容或者更换域名以及图床后,或者你和我一样就是为了升级全站HTTPS,需要大批修正一切文章的所用图片链接和一些文件链接地址,手动修正不太现实,因为一般这种连接比较多,难以准确查找 ...

  8. java 迭代器的优缺点_java迭代器和for循环优劣详解

    在进行迭代的时候,程序运行的效率也是我们挑选迭代方法的重要原因.目前有三种迭代方法:for循环.迭代器和Foreach.前两者相信大家都非常熟悉,为了更加直观分析效率的不同,我们还加入Foreach一 ...

  9. python遍历JSON文件

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 这里我写了一段python代码,设计一个递归函数可以遍历j ...

最新文章

  1. 利用prototxt文件绘制网络的结构图
  2. 停止了IIS服务为什么apache还是启动不了呢?
  3. [SDOI2017]数字表格
  4. Nginx的location指令
  5. bitnami-redmine Apache服务启动不起来
  6. ASP.NET 2.0 之 Master Page 学习笔记
  7. python要学多久可以找到工作-自学Python的高效方法,学Python多久能找到工作?
  8. 一键生成 Android 录屏 gif 的脚本
  9. flash cs6 初试
  10. Gom引擎Key.lic配套的X-FKGOM授权启动
  11. 滴滴悬赏百万寻凶,机智网友支付宝钓鱼转账杀害空姐明珠疑凶
  12. SMSBMS超市订单管理系统详解(一:准备工作)
  13. 计算摄影: 高动态范围成像
  14. 系统集成项目管理工程师有什么用?你真的了解吗
  15. Android Studio中对res、AndroidManifest、buil.gradle文件夹的讲解
  16. Insomnia的下载
  17. 去除input边框以及选中时边框 默认样式
  18. 矩阵特征值和椭圆长短轴的关系?
  19. vue+echarts实现仪表盘
  20. ROS系统与开源社区介绍

热门文章

  1. HaLoop—适用于迭代计算的Hadoop
  2. U盘格式化后空间变小解决方案(常用于做过系统盘的U盘)
  3. 关于computer vision的会议及vision guys-机器学习与视觉大牛族谱深度挖掘
  4. excel里有文字的数字怎么从小到大排序,而不是首数字排序
  5. activity启动流程或工作流程
  6. 为什么计算机二级未来教育评分低,未来教育计算机Msoffice二级, PPT评分总是说文件不存在, 分数总是0分, 到底是为什么?...
  7. 夜晚怎么能不吃宵夜呢
  8. java white case语句_JAVA基础(一)
  9. ORcad Capture CIS元件库管理
  10. 大一上课设——贪吃蛇(链表 + easyx)