在成功调用时,我使用键“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.ValueOf(testValue);
要么
childJSONObject.getString("name");
否则优先选择:3> 2> 1
假设com.google.gwt.json.client.*
在这里(来自问号标签和JSONValue
的使用,这在其他地方几乎找不到),toString()
旨在为您提供值的JSON表示。
这里的值是JSONString
,所以你需要使用:
testValue.isString().stringValue()
JSON.parse(JSON.Stringify(this_has_quotes));
是你所需要的全部! JSON.Stringify()
将相应地获得密钥的价值。并且JSON.parse()
将解析您的值并返回“干”值而不引用。
对我有用的是
defect.get("FormattedID").toString().substring(1,defect.get("FormattedID").toString().length()-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
在使用javax.json.JsonArray的情况下,您可以获取JsonValue的String,以便:
JsonArray array = jsonObject.getJsonArray("languages");
for (int i=0; i<array.size(); i++) {
System.out.println(array.getJsonString(i).getString());
}
数组中的引号取决于使用的JSON库:
org.codehaus.jettison.json.JSONArray或org.json.JSONArray
这个帖子很老了,但我在一小时前偶然发现了同样的问题并找到了正确的解决方案。您必须检查JsonValue的类型,如果它是JsonString,您可以将其解析为JsonString并调用其getString()方法。
if(val.getValueType().equals(JsonValue.ValueType.STRING)) {
c.setValue(((JsonString) val).getString());
} else {
c.setValue(val.toString());
}
您可以使用以下内容来获取没有双引号的字符串
JsonObject childJSONObject = new JsonObject();
JSONValue testValue = childJSONObject.get("name").getAsString();
这给出了字符串中没有双引号" "
的字符串
最好的选择是使用JSONObject的.getString()
方法或String的.valueOf()
方法。您也可以使用.replaceAll("\"","")
,但是当字符串本身包含嵌入其中的"
(双引号)时,这会有一些问题。因此,避免使用replaceAll()方法来摆脱意外问题。
但是,如果你想用手自己编码或者如果你想知道如何在不使用getString() and .valueOf()
的情况下删除双引号,你可以尝试这样
testValue.toString().subString(1,testValue.toString().length())
它将给出不包括String的第一个和最后一个字符的子字符串。但是,这似乎是一些混乱的事情。