1.) Create an arraylist of appropriate type, in this case i.e String
2.) Create a JSONObject
while passing your string to JSONObject
constructor as input
- As
JSONObject
notation is represented by braces i.e {}
- Where as
JSONArray
notation is represented by square brackets i.e []
3.) Retrieve JSONArray
from JSONObject
(created at 2nd step) using "interests"
as index.
4.) Traverse JASONArray
using loops upto the length of array provided by length()
function
5.) Retrieve your JSONObjects
from JSONArray
using getJSONObject(index)
function
6.) Fetch the data from JSONObject
using index '"interestKey"'.
Note : JSON
parsing uses the escape sequence for special nested characters if the json response (usually from other JSON response APIs) contains quotes ("
) like this
`"{"key":"value"}"`
should be like this
`"{\"key\":\"value\"}"`
so you can use JSONParser
to achieve escaped sequence format for safety as
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(inputString);
Code :
JSONParser parser = new JSONParser();
String response = "{interests : [{interestKey:Dogs}, {interestKey:Cats}]}";
JSONObject jsonObj = (JSONObject) parser.parse(response);
or
JSONObject jsonObj = new JSONObject("{interests : [{interestKey:Dogs}, {interestKey:Cats}]}");
List<String> interestList = new ArrayList<String>();
JSONArray jsonArray = jsonObj.getJSONArray("interests");
for(int i = 0 ; i < jsonArray.length() ; i++){
interestList.add(jsonArray.getJSONObject(i).optString("interestKey"));
}
Note : Sometime you may see some exceptions when the values are not available in appropriate type or is there is no mapping key
so in those cases when you are not sure about the presence of value so use optString
, optInt
, optBoolean
etc which will simply return the default value if it is not present and even try to convert value to int if it is of string type and vice-versa so Simply No null or NumberFormat exceptions at all in case of missing key or value
From docs
Get an optional string associated with a key. It returns the
defaultValue if there is no such key.
public String optString(String key, String defaultValue) {
String missingKeyValue = json_data.optString("status","N/A");
// note there is no such key as "status" in response
// will return "N/A" if no key found
or To get empty string i.e ""
if no key found then simply use
String missingKeyValue = json_data.optString("status");
// will return "" if no key found where "" is an empty string
Further reference to study
- How to convert String to JSONObject in Java
- Convert one array list item into multiple Items