从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)