简体   繁体   中英

Remove quote from the JSONArray output

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:

"Abcd"
"Wxyz"

My code is as follows:

public void onSuccess(JSONValue val) {
    JSONObject obj = val.isObject();
    JSONArray test = JSONUtil.getJSONArray(test, "objects");
    for (int i = 0; i < test.size(); i++) {
        JSONObject childJSONObject = (JSONObject) test.get(i);
        JSONValue testValue = childJSONObject.get("name");
        System.out.println(testValue);
    }
}

Want to print the name as following: (Without Double Quote)

Abcd
Wxyz

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

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("\"", "");

This thread is pretty old, but I stumbled upon the same problem an hour ago and found the correct solution. You have to check for the type of JsonValue and if its a JsonString, you can parse it to JsonString and call its getString() method.

if(val.getValueType().equals(JsonValue.ValueType.STRING)) {
  c.setValue(((JsonString) val).getString());
} else {
  c.setValue(val.toString());
}

you can use the below to get string without double quotes

    JsonObject childJSONObject = new JsonObject(); 
   JSONValue testValue = childJSONObject.get("name").getAsString();

this gives the string without double quotes " " in the string

just

s.replaceAll("\"", "");

removes all " characters in your string.

or in your case

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

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

quotes in arrays depends on which JOSN Lib are using:

org.codehaus.jettison.json.JSONArray or org.json.JSONArray

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.

Assuming com.google.gwt.json.client.* here (from question tags and use of JSONValue which is hardly found anywhere else), toString() is meant to give you a JSON representation of the value.

Here, the value is a JSONString , so you need to use:

testValue.isString().stringValue()

String mailMessage = JSONObject.toJSONString("JsonObject").replace("\\"", " ").trim();

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.

对我有用的是

defect.get("FormattedID").toString().substring(1,defect.get("FormattedID").toString().length()-1)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM