On the successful call, I am getting the JSONArray with the key \"objects\" and again the testValue with the key \"name\". The output is Like:
In case of using javax.json.JsonArray you can get the String of an JsonValue so:
JsonArray array = jsonObject.getJsonArray("languages");
for (int i=0; i<array.size(); i++) {
System.out.println(array.getJsonString(i).getString());
}
JSON.parse(JSON.Stringify(this_has_quotes));
Is all you need! JSON.Stringify()
will get the value of the key accordingly. And JSON.parse()
will parse your value and return the "dry" value without quote.
Convert the JSONValue back to String:
String.ValueOf(testValue);
Or
childJSONObject.getString("name");
After all this and still end up with quotes - then fall back on RegExp.
testValue.toString().replaceAll("\"", "");
You can get the value as a String itself, don't need to cast or replace:
JSONObject childJSONObject = (JSONObject) test.get(i);
String testValue = childJSONObject.getString("name");
It will return a String without quotes.
More info: JSONObject
1. .replaceAll()
testValue.toString().replaceAll("\"", "");
This method replace all the double quotes which are present in your name not the first and the last.
Example : "Abcd" becomes Abcd but if the name is "Ab"cd" it should be Ab"cd according to your requirement but it becomes Abcd. Mean to say that all the double quote replaced.
2. substring()
If you want to use the substring method approach then use the following syntax to remove the first and the last double quotes from your string:
testValue.toString().subString(1,testValue.toString().length()-1);
1
- indicates the first character of the string
testValue.toString().length()-1
: indicates the last character of the string.
For your case .substring()
method is more better than the .replaceAll()
, if .getString()
not working.
3. .ValueOf() OR .getString()
Don't know In your case why it is not working ? (may be because the string itself containing the quotes) other wise the best way is to Convert the JSONValue to the String as String.ValueOf(testValue);
OR
childJSONObject.getString("name");
Otherwise give preference as : 3 > 2 > 1
Best option is to use .getString()
method of JSONObject or .valueOf()
method of String.
You can also use the .replaceAll("\"","")
, but this has some problems, when the string itself contains "
(double quotes) embedded in it. So, avoid using the replaceAll() method to get out of the unexpected problems.
But still, if you want to code on own by your hand or If you want to know how to delete the double quotes without using getString() and .valueOf()
, you can try like this
testValue.toString().subString(1,testValue.toString().length())
it will give the sub string excluding first and last characters of the String. But, it seems like some messy thing.