//import java.util.ArrayList;
//import org.bson.Document;
Document root = Document.parse("{\n"
+ " \"name\": \"Json\",\n"
+ " \"detail\": {\n"
+ " \"first_name\": \"Json\",\n"
+ " \"last_name\": \"Scott\",\n"
+ " \"age\": \"23\"\n"
+ " },\n"
+ " \"status\": \"success\"\n"
+ "}");
System.out.println(((String) root.get("name")));
System.out.println(((String) ((Document) root.get("detail")).get("first_name")));
System.out.println(((String) ((Document) root.get("detail")).get("last_name")));
System.out.println(((String) ((Document) root.get("detail")).get("age")));
System.out.println(((String) root.get("status")));
String jsonErrorString=((HttpClientErrorException)exception).getResponseBodyAsString();
JSONObject jsonObj=null;
String errorDetails=null;
String status=null;
try {
jsonObj = new JSONObject(jsonErrorString);
int index =jsonObj.getString("detail").indexOf(":");
errorDetails=jsonObj.getString("detail").substring(index);
status=jsonObj.getString("status");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
item.put("status", status);
item.put("errordetailMsg", errorDetails);
Pasting my code here, this should help. It shows the package which can be used.
import org.json.JSONException;
import org.json.JSONObject;
public class extractingJSON {
public static void main(String[] args) throws JSONException {
// TODO Auto-generated method stub
String jsonStr = "{\"name\":\"SK\",\"arr\":{\"a\":\"1\",\"b\":\"2\"}}";
JSONObject jsonObj = new JSONObject(jsonStr);
String name = jsonObj.getString("name");
System.out.println(name);
String first = jsonObj.getJSONObject("arr").getString("a");
System.out.println(first);
}
}
Use a JSON parser. There are plenty of JSON parsers written in Java.
Look under the Java section and find one you like.
we can use the below to get key as string from JSON OBJECT
JsonObject json = new JsonObject();
json.get("key").getAsString();
this gives the string without double quotes " "
in the string
If you don't mind adding a dependency, you can use JsonPath.
import com.jayway.jsonpath.JsonPath;
String firstName = JsonPath.read(rawJsonString, "$.detail.first_name");
"$" specifies the root of the raw json string and then you just specify the path to the field you want. This will always return a string. You'll have to do any casting yourself.
Be aware that it'll throw a PathNotFoundException at runtime if the path you specify doesn't exist.
JSONArray ja = new JSONArray(json);
JSONObject ob = ja.getJSONObject(0);
String nh = ob.getString("status");
[ { "status" : "true" } ]
where 'json' is a String and status is the key from which i will get value
Source: Stackoverflow.com