java - 如何从JsonNode对象中检索以特定字母开头的JSON元素列表?

标签 java json jackson json-deserialization jsonnode

我正在尝试解析JsonNode对象,以从JsonNode对象中检索以“ s”开头的元素的列表。

我的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"}]

关于java - 如何从JsonNode对象中检索以特定字母开头的JSON元素列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56656470/

相关文章:

java - Json 文件返回多个值,我希望我的 getter 和 setter 在设置为第一个值后拒绝其他值

java - 如何使用另一个 RSAKey 加密一个 RSAKey?

java - JSONPath和Traverson过滤: single element array

javascript - 表体未正确附加

java - JsonSerialize/JsonDeserialize 在 Apache Tomcat (TomEE) 中不起作用

xml - Jackson XML 无法反序列化列表

Java Jackson从多个模块中选择注册模块将JSON序列化为字符串?

java - 如何避免在Java中的不同类中使用相同的变量?

java - 如何将 json 的 Maven 依赖项添加到 >= Java 9 中的模块

javascript - 如何重定向到 json 请求类型的任何其他页面?