从JSONArray输出中删除引号

在成功调用时,我使用键“objects”获取JSONArray,并使用键“name”获取testValue。 输出如下:

"Abcd" "Wxyz" 

我的代码如下:

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

想要打印如下名称:(没有双引号)

 Abcd Wxyz 

1. .replaceAll()

 testValue.toString().replaceAll("\"", ""); 

此方法替换名称中出现的所有双引号,而不是第一个和最后一个。

示例:“Abcd”变为Abcd但如果名称为“Ab”cd,则“它应该是Ab”cd根据您的要求但它变为Abcd。 意思是说所有的双引号都被取代了。

2. substring()

如果要使用子字符串方法方法,请使用以下语法从字符串中删除第一个和最后一个双引号:

 testValue.toString().subString(1,testValue.toString().length()-1); 

1 – 表示字符串的第一个字符

testValue.toString().length()-1 :表示字符串的最后一个字符。

对于你的情况.substring()方法比.replaceAll()更好,如果.getString()不起作用。

3. .ValueOf()OR .getString()

不知道在你的情况下为什么它不工作? (可能是因为字符串本身包含引号)其他最好的方法是将JSONValue转换为String作为String.ValueOf(testValue);

要么

childJSONObject.getString("name");

否则优先考虑:3> 2> 1

将JSONValue转换回String:

 String.ValueOf(testValue); 

要么

 childJSONObject.getString("name"); 

在所有这一切之后仍然以报价结束 – 然后回到RegExp。

 testValue.toString().replaceAll("\"", ""); 

只是

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

删除字符串中的所有“字符”。

或者在你的情况下

 testValue.toString().replaceAll("\"", ""); 

您可以将值作为String本身获取,不需要强制转换或替换:

 JSONObject childJSONObject = (JSONObject) test.get(i); String testValue = childJSONObject.getString("name"); 

它将返回不带引号的String。

更多信息: JSONObject

数组中的引号取决于JOSN Lib正在使用的内容:

org.codehaus.jettison.json.JSONArray或org.json.JSONArray

最好的选择是使用JSONObject的.valueOf()方法或String的.valueOf()方法。 您也可以使用.replaceAll("\"","") ,但是当字符串本身包含" (双引号) "时,这会有一些问题。 因此,避免使用replaceAll()方法来摆脱意外问题。

但是,如果你想自己编写代码或者如果你想知道如何在不使用getString() and .valueOf()情况下删除双引号,你可以试试这样

 testValue.toString().subString(1,testValue.toString().length()) 

它将给出不包括String的第一个和最后一个字符的子字符串。 但是,这似乎是一些混乱的事情。

在使用javax.json.JsonArray的情况下,您可以获取JsonValue的String,以便:

 JsonArray array = jsonObject.getJsonArray("languages"); for (int i=0; i 

假设com.google.gwt.json.client.*在这里(来自问题标签并且使用其他地方几乎找不到的JSONValue ), toString()意味着为您提供值的JSON表示。

这里的值是JSONString ,所以你需要使用:

 testValue.isString().stringValue() 

这个post很老了,但我在一小时前偶然发现了同样的问题并找到了正确的解决方案。 您必须检查JsonValue的类型,如果它是JsonString,您可以将其解析为JsonString并调用其getString()方法。

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

是你所需要的全部! JSON.Stringify()将相应地获取键的值。 并且JSON.parse()将解析您的值并返回“干”值而不引用。

对我有用的是

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