user7592766
user7592766

Reputation: 61

How to query a json object in java?

I have a test.json file with data:

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

Now when I query select * from test; should show me the result as

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

Is it possible to directly query a JSON Object as we do for XML?

Upvotes: 1

Views: 11130

Answers (3)

Suresh Kb
Suresh Kb

Reputation: 151

there is no way to query directly from the Json, if you want you have to create a new class that will do your requirement, OR you can use the ObjectMapper (download and add to your class path) from jackson-all-1.9.0.jar, and create a new transfer Object TestTO.java expose the setters and getters you will get your data like below..

1.create 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 your data from the object.

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

if your json contains the multiple test objects, use an test array like below, it will give you the array of tests, you can iterate over and get the data, like below.

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

Upvotes: 0

Adam
Adam

Reputation: 36723

The popular Jackson XML library supports JsonPointer since version 2.3. This is a query language similar to XPath

Input

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

Example

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

Upvotes: 3

PimJ
PimJ

Reputation: 38

I would say you can either try looking for a library which allows you to search throught JSON data or to convert your json to JSONObjects and query your data in a Object Oriented way.

Perhaps this thread will help:

Query a JSONObject in java

Upvotes: 0

Related Questions