我有一个包含数据的test.json
文件:
{
"name":"tet",
"id":"1",
"age" : "34"
}
现在,当我查询select * from test;
时,应该将结果显示为
name id age
-----------
tet 1 34
是否可以像对待XML那样直接查询JSON对象?
答案 0 :(得分:0)
我想说你可以尝试寻找一个允许你搜索JSON数据的库,或者将你的json转换为JSONObjects并以面向对象的方式查询你的数据。
也许这个帖子会有所帮助:
答案 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);