栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java中展平3个嵌套的JSON字符串

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java中展平3个嵌套的JSON字符串

为了避免与键名冲突,可以使用JSON指针规范创建它们。

Jackson
库也支持它,因此您以后可以使用它们遍历该
JsonNode
节点。

简单的实现可能如下所示:

import com.fasterxml.jackson.databind.JsonNode;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.node.ArrayNode;import com.fasterxml.jackson.databind.node.ObjectNode;import java.io.File;import java.util.linkedHashMap;import java.util.Map;import java.util.Objects;import java.util.concurrent.atomic.AtomicInteger;public class JsonApp {  public static void main(String[] args) throws Exception {    File jsonFile = new File("./test.json");    ObjectMapper mapper = new ObjectMapper();    JsonNode root = mapper.readTree(jsonFile);    Map<String, JsonNode> map = new JsonFlattener(root).flatten();    System.out.println("Use key-value pairs:");    map.forEach(        (k, v) -> {          System.out.println(k + " => " + v);        });    System.out.println();    System.out.println("Use pointers:");    map.forEach(        (k, v) -> {          System.out.println(k + " => " + root.at(k));        });  }}class JsonFlattener {  private final Map<String, JsonNode> json = new linkedHashMap<>(64);  private final JsonNode root;  JsonFlattener(JsonNode node) {    this.root = Objects.requireNonNull(node);  }  public Map<String, JsonNode> flatten() {    process(root, "");    return json;  }  private void process(JsonNode node, String prefix) {    if (node.isObject()) {      ObjectNode object = (ObjectNode) node;      object          .fields()          .forEachRemaining(   entry -> {       process(entry.getValue(), prefix + "/" + entry.getKey());   });    } else if (node.isArray()) {      ArrayNode array = (ArrayNode) node;      AtomicInteger counter = new AtomicInteger();      array          .elements()          .forEachRemaining(   item -> {     process(item, prefix + "/" + counter.getAndIncrement());   });    } else {      json.put(prefix, node);    }  }}

上面的代码打印:

Use key-value pairs:/Source => "source-1"/Rows/0/Keys/device-id => "BC04-EBH-N3K-01"/Rows/0/Keys/interface-name => "TenGigE0/0/0/39"/Rows/0/Keys/node-name => "0/0/CPU0"/Rows/0/Timestamp => 1567621527656/Rows/0/inner/donm/id => "0062"/Rows/0/inner/donm/mol/rem => 30/Rows/0/inner/donm/mol/len => 11/Rows/0/inner/donm/mol/org/ldp/0/t => 486/Rows/0/inner/donm/mol/org/ldp/0/o => 322/Rows/0/inner/donm/mol/org/ldp/1/t => 487/Rows/0/inner/donm/mol/org/ldp/1/o => 32/Rows/0/inner/donm/mol/org/ldp/1/twss => 1/Rows/0/inner/donm/mol/org/ldp/1/tlv => "00:01"/Rows/0/inner/donm/mol/chlen => 14/Rows/0/inner/donm/mol/poe => 5/Rows/0/inner/donm/mol/combs => 10/Rows/0/inner/donm/mol/chaype => 4/Rows/0/inner/donm/mol/rek => 0/Rows/0/inner/donm/mol/rem-um => 67/Rows/0/inner/donm/detail/enas => "B,R"/Rows/0/inner/donm/detail/systes => "B,R"/Rows/0/inner/donm/detail/timng => 91/Rows/0/inner/donm/detail/syn => "C"/Rows/0/inner/donm/detail/met-type => 0/Rows/0/inner/donm/detail/neses/lldEDIT/0/ium => 830/Rows/0/inner/donm/detail/neses/lldEDIT/0/m => 1/Rows/0/inner/donm/detail/neses/lldEDIT/0/ass/ape => "ipv4"/Rows/0/inner/donm/detail/neses/lldEDIT/0/ass/ipvs => "94"/Rows/0/inner/donm/detail/pess => "0008"/Rows/0/inner/donm/detail/por]d => 0/Rows/0/inner/donm/detail/pon => "BCtive"/Rows/0/inner/donm/detail/sysme => "BC1"/Rows/0/inner/donm/reme => "Bu1"/Rows/0/inner/donm/hean => 0/Rows/0/inner/donm/porl => "Et1"/Tey/epath => "Cgetail"/Tey/sustr => "MX"/Tey/coime => 1567621527653/Tey/msp => 1567621527653/Tey/come => 1567621527660/Tey/nor => "BC5"/Tey/cid => 14789654Use pointers:/Source => "source-1"/Rows/0/Keys/device-id => "BC04-EBH-N3K-01"/Rows/0/Keys/interface-name => "TenGigE0/0/0/39"/Rows/0/Keys/node-name => "0/0/CPU0"/Rows/0/Timestamp => 1567621527656/Rows/0/inner/donm/id => "0062"/Rows/0/inner/donm/mol/rem => 30/Rows/0/inner/donm/mol/len => 11/Rows/0/inner/donm/mol/org/ldp/0/t => 486/Rows/0/inner/donm/mol/org/ldp/0/o => 322/Rows/0/inner/donm/mol/org/ldp/1/t => 487/Rows/0/inner/donm/mol/org/ldp/1/o => 32/Rows/0/inner/donm/mol/org/ldp/1/twss => 1/Rows/0/inner/donm/mol/org/ldp/1/tlv => "00:01"/Rows/0/inner/donm/mol/chlen => 14/Rows/0/inner/donm/mol/poe => 5/Rows/0/inner/donm/mol/combs => 10/Rows/0/inner/donm/mol/chaype => 4/Rows/0/inner/donm/mol/rek => 0/Rows/0/inner/donm/mol/rem-um => 67/Rows/0/inner/donm/detail/enas => "B,R"/Rows/0/inner/donm/detail/systes => "B,R"/Rows/0/inner/donm/detail/timng => 91/Rows/0/inner/donm/detail/syn => "C"/Rows/0/inner/donm/detail/met-type => 0/Rows/0/inner/donm/detail/neses/lldEDIT/0/ium => 830/Rows/0/inner/donm/detail/neses/lldEDIT/0/m => 1/Rows/0/inner/donm/detail/neses/lldEDIT/0/ass/ape => "ipv4"/Rows/0/inner/donm/detail/neses/lldEDIT/0/ass/ipvs => "94"/Rows/0/inner/donm/detail/pess => "0008"/Rows/0/inner/donm/detail/por]d => 0/Rows/0/inner/donm/detail/pon => "BCtive"/Rows/0/inner/donm/detail/sysme => "BC1"/Rows/0/inner/donm/reme => "Bu1"/Rows/0/inner/donm/hean => 0/Rows/0/inner/donm/porl => "Et1"/Tey/epath => "Cgetail"/Tey/sustr => "MX"/Tey/coime => 1567621527653/Tey/msp => 1567621527653/Tey/come => 1567621527660/Tey/nor => "BC5"/Tey/cid => 14789654


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/495043.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号