簡體   English   中英

如何檢索以JsonNode對象中的特定字母開頭的JSON元素列表?

[英]How to retrieve a list of JSON element that start with a specific letter from a JsonNode object?

我試圖解析JsonNode對象檢索從“S”開始元素的列表JsonNode對象。

我的JSON

{"Result":[
  {
     "user_name":"jack",
     "email":"admin@gmail.com",   
     "Phone":"111111111",
     "s_update":"2019-06-06 11:40:38",
     "s_created_on":"2019-06-02 17:40:38",
     "s_created_by":"admin",
     "s_id":"ad9db8a330091c2e1bb4b961935"
  }
]}

預期產量:

{s_created_on=2019-06-02 17:40:38,s_created_by=admin,
   s_id=ad9db8a330091c2e1bb4b961935}

有關正確方法的任何想法嗎?

您只需要遍歷JSON Array所有項目,並為每個項目迭代所有字段。 如果字段名稱從s開始刪除它。 見下面的例子:

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.io.IOException;
import java.util.Iterator;
import java.util.Map.Entry;

public class Test {

    public static void main(String[] args) throws IOException {
        File jsonFile = new File("./src/main/resources/test.json");

        ObjectMapper jsonMapper = new ObjectMapper();
        ObjectNode root = (ObjectNode) jsonMapper.readTree(jsonFile);
        ArrayNode result = (ArrayNode) root.get("Result");
        for (JsonNode node : result) {
            Iterator<Entry<String, JsonNode>> fields = node.fields();
            while (fields.hasNext()) {
                Entry<String, JsonNode> next = fields.next();
                if (!next.getKey().startsWith("s")) {
                    fields.remove();
                }
            }
        }
        System.out.println(result);
    }
}

上面的代碼打印:

[{"s_update":"2019-06-06 11:40:38","s_created_on":"2019-06-02 17:40:38","s_created_by":"admin","s_id":"ad9db8a330091c2e1bb4b961935"}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM