亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 ObjectMapper java API 解析 JSON 字符串

使用 ObjectMapper java API 解析 JSON 字符串

慕的地8271018 2021-07-12 12:01:41
我有一個 JSON 如下。目標是獲得相應的“ip”、“PRODUCTTYPE”和“ID”值。{    "customerId": "dummy1",    "nameIdmap": {        "10.2.1.0": "{PRODUCTTYPE=null, ID=123}",        "10.2.1.3": "{PRODUCTTYPE=null, ID=456}",        "10.2.1.4": "{PRODUCTTYPE=null, ID=789}",        "10.2.1.5": "{PRODUCTTYPE=null, ID=193}"    }}我正在使用 ObjectMapper API 來解析和獲取值。ObjectMapper om = new ObjectMapper();JsonNode node = om.readTree(stringToBeParsed);String customerID = node.get("customerId").asText();System.out.println("The Customer ID is ::: "+customerID);JsonNode nameIdmap = node.get("nameIdmap");StreamSupport.stream(nameIdmap.spliterator(), false).forEach(        kv -> {          System.out.println(kv.asText().split(",")[0] +" ,           "+kv.asText().split(",")[1]);});但問題是我,在這種情況下無法獲得 IP 地址的密鑰。嘗試了不同的方法來實現,但無法得到我想要的。我檢查了nameIdmap是否是一個數組,nameIdmap.isArray()但它是false。我也在下面嘗試過,但無法獲得IP即密鑰JsonNode nameIdmap = node.get("nameIdmap"); StreamSupport.stream(nameIdmap.spliterator(), false).collect(Collectors.toList())  .forEach(item -> {            System.out.println(item.asText());   });;
查看完整描述

3 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

您可以通過 nameIdmap.getFieldNames 作為迭代器獲取字段名稱。然后你可以像這樣迭代:


...

Iterator<String> fieldNames = idmap.getFieldNames();

while(fieldNames.hasNext()) {

  String ip = fieldNames.next();

  String textValue = idmap.get(ip).getTextValue()

  System.out.println(ip + ":" + textValue);

}

如果嵌套信息也是 JSON,您可以通過 idmap.get(ip).get("ID"); 進一步訪問它。如果沒有,那么您仍然可以選擇通過正則表達式找到它:


Pattern p = Pattern.compile("ID=(\\d+)");

Matcher m = p.matcher(textValue);

if(m.find()) {

  System.out.println(ip + ":" + m.group(1));

}


查看完整回答
反對 回復 2021-07-14
  • 3 回答
  • 0 關注
  • 319 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號