博客
关于我
Java中递归遍历Map数据,并替换值为null的数据
阅读量:785 次
发布时间:2019-03-25

本文共 2008 字,大约阅读时间需要 6 分钟。

项目需求分析与解决方案

当前需求针对一个JSON数据格式的处理,要求对内部结构中出现"null"值进行替换,替换为空间实137020。数据结构为:

{  "TYPE": "FLIGHTLOAD",  "DATA": {    "FLIGHTID": {      "OUTERFLIGHTID": "6A9DF3F551060192E0530B061C20F1C1",      "CARRIER": "MF",      "FLIGHT": "null",      "ORIGIN": "PEK",      "DESTINATION": "XMN",      "SCHEDULEDEPARTURETIME": "20190312160500"    },    "PAYLOAD": [      {        "DEPARTUREAIRPORT": "PEK",        "DESTINATIONAIRPORT": "XMN",        "TRANSITCHILD": "null",        "TRANSITINFANT": "null",        "BAGGAGE": "959",        "BAGGAGECOUNT": "959",        "POST": "0",        "CARGO": "1859",        "TRANSITPOST": "null",        "TRANSITCARGO": "null"      }    ]  }

工具与解决方案

为了实现上述需求,我们开发了一套递归处理方法,该方法能够将JSON数据中的"null"值替换为空。具体实现如下:

public static void mapNullToEmpty(Map
jsonResult) { for (Map.Entry
entry : jsonResult.entrySet()) { String key = entry.getKey(); Object obj = entry.getValue(); if (obj instanceof String) { if ("null".equals(obj)) { jsonResult.put(key, ""); } } else if (obj instanceof List) { List
> dataList = (List
>) obj; for (Map
data : dataList) { mapNullToEmpty(data); } } else if (obj instanceof Map) { mapNullToEmpty((Map
) obj); } }}

实施效果

经过处理后的JSON数据结构如下:

{  "TYPE": "FLIGHTLOAD",  "DATA": {    "FLIGHTID": {      "OUTERFLIGHTID": "6A9DF3F551060192E0530B061C20F1C1",      "CARRIER": "MF",      "FLIGHT": "",      "ORIGIN": "PEK",      "DESTINATION": "XMN",      "SCHEDULEDEPARTURETIME": "20190312160500"    },    "PAYLOAD": [      {        "DEPARTUREAIRPORT": "PEK",        "DESTINATIONAIRPORT": "XMN",        "TRANSITCHILD": "",        "TRANSITINFANT": "",        "BAGGAGE": "959",        "BAGGAGECOUNT": "959",        "POST": "0",        "CARGO": "1859",        "TRANSITPOST": "",        "TRANSITCARGO": ""      }    ]  }}

项目总结

该方案通过递归处理JSON数据,实现了将"null"值替换为空的需求。在实际应用中,需要注意以下几点:

  • 确保处理方法能够覆盖所有嵌套的JSON结构
  • 注意保持原始数据的其他不变性
  • 要严格按照项目需求对"null"值进行替换
  • 在处理后期性能有所增加
  • 这种方法能够灵活适配不同层级的JSON数据,同时确保代码简洁且易于维护。

    转载地址:http://xapuk.baihongyu.com/

    你可能感兴趣的文章
    Python基础(2):控制结构
    查看>>
    Python基础 | 关于“循环”那些事
    查看>>
    python系列【仅供参考】:python之subprocess模块rsync拉取文件
    查看>>
    python系列【仅供参考】:python 远程rdp
    查看>>
    python基础
    查看>>
    Python基本语法与变量类型
    查看>>
    python基本数据类型(容器)- tuple list dict set
    查看>>
    python基本工资的调整方案_Python薪资又涨了!这可咋办!
    查看>>
    Python基准测试和性能分析内存管理和垃圾回收
    查看>>
    Python基于RESTful风格的接口自动化测试实战
    查看>>
    python基于pygame实现跨年烟花效果
    查看>>
    python基于flask搭建http服务(四)—— Docker容器化部署
    查看>>
    python基于flask搭建http服务(二)—— 实现Excel上传、数据清洗、入库
    查看>>
    python基于flask搭建http服务(三)—— 使用gunicorn部署项目
    查看>>
    python基于flask搭建http服务(一)—— 实现数据查询和Excel导出
    查看>>
    Python块键盘/鼠标输入
    查看>>
    python在心理学研究中的应用有哪些_心理学在线研究可用平台简介和应用进展
    查看>>
    python在使用HTMLTestRunner时,报告为空,错误提示<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf_8'>...
    查看>>
    python在gpu上运行_【python】python开启GPU加速
    查看>>
    Python在def函数中使用for循环
    查看>>