Ask*_*Ask 9 java arrays gwt json jsonobject
在成功调用时,我使用键"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
Vai*_*ain 15
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转换为字符串asString.ValueOf(testValue); 
要么
childJSONObject.getString("name");
否则优先选择:3> 2> 1
将JSONValue转换回String:
String.ValueOf(testValue);
要么
childJSONObject.getString("name");
在所有这些之后仍然以报价结束 - 然后回到RegExp.
testValue.toString().replaceAll("\"", "");
小智 5
这个线程已经很老了,但我在一小时前偶然发现了同样的问题并找到了正确的解决方案。您必须检查 JsonValue 的类型,如果是 JsonString,则可以将其解析为 JsonString 并调用其 getString() 方法。
if(val.getValueType().equals(JsonValue.ValueType.STRING)) {
  c.setValue(((JsonString) val).getString());
} else {
  c.setValue(val.toString());
}