如何在java中查询json对象?

时间:2017-02-27 12:12:13

标签: java json

我有一个包含数据的test.json文件:

{
  "name":"tet",
  "id":"1",
  "age" : "34"
}

现在,当我查询select * from test;时,应该将结果显示为

name id age
-----------
tet  1   34

是否可以像对待XML那样直接查询JSON对象?

4 个答案:

答案 0 :(得分:0)

我想说你可以尝试寻找一个允许你搜索JSON数据的库,或者将你的json转换为JSONObjects并以面向对象的方式查询你的数据。

也许这个帖子会有所帮助:

Query a JSONObject in java

答案 1 :(得分:0)

流行的Jackson XML库从版本2.3开始支持JsonPointer。这是一种类似于XPath的查询语言

输入

[{
  "name":"tet",
  "id":"1",
  "age" : "34"
},{
  "name":"tet",
  "id":"1",
  "age" : "34"
},{
  "name":"tet",
  "id":"1",
  "age" : "34"
},{
  "name":"tet",
  "id":"1",
  "age" : "34"
}]

实施例

ObjectMapper objectMapper = new ObjectMapper();
JsonNode root = objectMapper.readTree(new File("foo.json"));
System.out.println(root.at("/0/name").asText());

答案 2 :(得分:0)

没有办法直接从Json查询,如果你想要创建一个满足你需求的新类,或者你可以使用来自jackson-all的ObjectMapper(下载并添加到你的类路径) 1.9.0.jar,并创建一个新的传输对象TestTO.java公开setter和getters,你将获得如下的数据..

1.创建TestTO.java

public class TestTO{

private String name;
private int id;
private int age;

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

}

2.从对象中读取您的数据。

            final ObjectMapper mapper = new ObjectMapper();
            Test test = mapper.readValue(yourJson.json, TestTO.class);
            String name = test.getName();
            int id = test.getId();
            int age = test.getAge();

如果您的json包含多个测试对象,请使用如下所示的测试数组,它将为您提供测试数组,您可以迭代并获取数据,如下所示。

            final ObjectMapper mapper = new ObjectMapper();
            TestTO[] test = mapper.readValue(yourJson.json, TestTO.class[]);
            for(Test tst:test){
            String name = test.getName();
            int id = test.getId();
            int age = test.getAge();
           }

答案 3 :(得分:-2)

JSONObject jsonObject=new JSONObject();
jsonObject.add("name","tet");
jsonObject.add("id",1);
jsonObject.add("age",34);