I am parsing JSON responses from REST API in Java, but I don't want to create a Java class (POJO) for each response (responses have different data structures and fields). Is there a more generic JSON parser in Java that is similar to the straightforward syntax of JavaScript?
The JSON below is the result of just one of the many REST endpoints
{
"f1" : "volume",
"f2" : "gender",
"f3" : "days",
"f4" : [{
"id" : "F",
"name" : "female",
"values" : [{
"name" : "September",
"value" : 12
}
]
}, {
"id" : "M",
"name" : "male",
"values" : [{
"name" : "September",
"value" : 11
}
]
}
]
}
In JavaScript, to access the value for female:
jsonRoot.f4[0].values[0].value
which is neater than to have to create numerous Java classes. Can you suggest something similar or a way to avoid creating many POJOs?
If you imported the jar of com.google.gson.You can get the value like this:
String str="{" +
" \"f1\" : \"volume\"," +
" \"f2\" : \"gender\"," +
" \"f3\" : \"days\"," +
" \"f4\" : [{" +
" \"id\" : \"F\"," +
" \"name\" : \"female\"," +
" \"values\" : [{" +
" \"name\" : \"September\"," +
" \"value\" : 12" +
" }" +
" ]" +
" }, {" +
" \"id\" : \"M\"," +
" \"name\" : \"male\"," +
" \"values\" : [{" +
" \"name\" : \"September\"," +
" \"value\" : 11" +
" }" +
" ]" +
" }" +
" ]" +
"}";
JsonParser parser=new JsonParser();
JsonObject object=(JsonObject)parser.parse(str);
String value=object.get("f4").getAsJsonArray().get(0).getAsJsonObject()
.get("values").getAsJsonArray().get(0).getAsJsonObject()
.get("value").getAsString();
String s="[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
Object obj=JSONValue.parse(s);
JSONArray array=(JSONArray)obj;
System.out.println(array.get(1));
System.out.println(((JSONObject)array.get(1)).get("1"));
more example
json-simple.jar
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With