2017-02-27 101 views
1

我有一个test.json文件与数据:如何在java中查询json对象?

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

现在,当我查询select * from test;应该告诉我结果作为

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

是否可以直接查询JSON对象,因为我们对XML做什么?

+0

您使用的是什么JSON库?它是JSR-353还是其他的? –

回答

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

我不想添加到json对象,我想从Json中检索 – user7592766

+0

现在您可以检索如下数据:jsonobject.name/id/age –

+0

select * from table;会给出一个表的结果吗?以同样的方式,如果我查询选择*从测试;我应该得到的JSON数据作为名称ID年龄 -------------- tet 1 34 – user7592766

0

我会说,你可以尝试寻找一个库,它允许你搜索throught JSON数据,或者你的JSON转换为一个JSONObjects和查询您的数据在一个面向对象的方式。

也许这线程将帮助:

Query a JSONObject in java

0

流行杰克逊XML库支持JsonPointer自2.3版本。这是类似的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()); 
0

没有办法直接从JSON来查询,如果你想要,你必须创建一个新的类,会做你的要求,或者你可以从jackson-all-1.9.0.jar中使用ObjectMapper(下载并添加到你的类路径),并创建一个新的传输对象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.read您的数据。

  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(); 
      }