java迭代器遍历json,批量替换内容
需求:针对复杂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,批量替换内容相关推荐
- Java递归遍历JSON的N叉树数据结构
JSON的N叉树数据结构如下: {"code": 0,"data": [{"name": "xxx","uui ...
- java迭代器遍历list_使用Java中的迭代器遍历ArrayList
迭代器可用于遍历ArrayList.如果ArrayList中有更多元素,则hasNext()方法返回true,否则返回false.next()方法返回ArrayList中的下一个元素,如果没有下一个元 ...
- word 文档操作类,可以读出word中书签 批量替换内容,直接调用
using System; using System.Collections.Generic; using System.Text; using Word = Microsoft.Office.Int ...
- JAVA迭代器遍历与删除
package com; //迭代器import java.util.ArrayList; import java.util.Collection; import java.util.Iterator ...
- java迭代器遍历中删除对象
当我们在遍历集合的过程中想移除一个元素的时候,如果不用迭代器的话,可以直接根据下标将元素移除: List<String> list = Lists.newArrayList("a ...
- ant批量处理word文件内容_word多个文件批量替换内容
Sub CommandButton1_Click() Application.ScreenUpdating = False '关闭屏幕闪 Dim myFile$, myPath$, i%, myDo ...
- mysql批量修改http为https,墨涩网 - typecho系统升级全站https数据库批量替换网址/内容——墨涩网...
我们的网站需要批量替换内容或者更换域名以及图床后,或者你和我一样就是为了升级全站HTTPS,需要大批修正一切文章的所用图片链接和一些文件链接地址,手动修正不太现实,因为一般这种连接比较多,难以准确查找 ...
- java 迭代器的优缺点_java迭代器和for循环优劣详解
在进行迭代的时候,程序运行的效率也是我们挑选迭代方法的重要原因.目前有三种迭代方法:for循环.迭代器和Foreach.前两者相信大家都非常熟悉,为了更加直观分析效率的不同,我们还加入Foreach一 ...
- python遍历JSON文件
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 这里我写了一段python代码,设计一个递归函数可以遍历j ...
最新文章
- 利用prototxt文件绘制网络的结构图
- 停止了IIS服务为什么apache还是启动不了呢?
- [SDOI2017]数字表格
- Nginx的location指令
- bitnami-redmine Apache服务启动不起来
- ASP.NET 2.0 之 Master Page 学习笔记
- python要学多久可以找到工作-自学Python的高效方法,学Python多久能找到工作?
- 一键生成 Android 录屏 gif 的脚本
- flash cs6 初试
- Gom引擎Key.lic配套的X-FKGOM授权启动
- 滴滴悬赏百万寻凶,机智网友支付宝钓鱼转账杀害空姐明珠疑凶
- SMSBMS超市订单管理系统详解(一:准备工作)
- 计算摄影: 高动态范围成像
- 系统集成项目管理工程师有什么用?你真的了解吗
- Android Studio中对res、AndroidManifest、buil.gradle文件夹的讲解
- Insomnia的下载
- 去除input边框以及选中时边框 默认样式
- 矩阵特征值和椭圆长短轴的关系?
- vue+echarts实现仪表盘
- ROS系统与开源社区介绍
热门文章
- HaLoop—适用于迭代计算的Hadoop
- U盘格式化后空间变小解决方案(常用于做过系统盘的U盘)
- 关于computer vision的会议及vision guys-机器学习与视觉大牛族谱深度挖掘
- excel里有文字的数字怎么从小到大排序,而不是首数字排序
- activity启动流程或工作流程
- 为什么计算机二级未来教育评分低,未来教育计算机Msoffice二级, PPT评分总是说文件不存在, 分数总是0分, 到底是为什么?...
- 夜晚怎么能不吃宵夜呢
- java white case语句_JAVA基础(一)
- ORcad Capture CIS元件库管理
- 大一上课设——贪吃蛇(链表 + easyx)