在成功调用时,我使用键“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
答案 0 :(得分:13)
<强> 1。 .replaceAll()强>
testValue.toString().replaceAll("\"", "");
此方法会替换您名称中出现的所有双引号,而不是第一个和最后一个。
示例:“Abcd”变为Abcd,但如果名称为“Ab”cd,则“它应该是Ab”cd,根据您的要求,但它变为Abcd。意思是说所有双引号都被替换了。
<强> 2。子()强>
如果要使用子字符串方法方法,请使用以下语法从字符串中删除第一个和最后一个双引号:
testValue.toString().subString(1,testValue.toString().length()-1);
1
- 表示字符串的第一个字符
testValue.toString().length()-1
:表示字符串的最后一个字符。
对于您的案例,.substring()
方法比.replaceAll()
更好,如果.getString()
无效。
第3。 .ValueOf()或.getString()
不知道在你的情况下为什么它不起作用? (可能是因为字符串本身包含引号)其他最好的方法是将JSONValue转换为字符串String.ValueOf(testValue);
OR
childJSONObject.getString("name");
否则优先考虑:3&gt; 2&gt; 1
答案 1 :(得分:6)
将JSONValue转换回String:
String.ValueOf(testValue);
或者
childJSONObject.getString("name");
在所有这一切之后仍然以报价结束 - 然后回到RegExp。
testValue.toString().replaceAll("\"", "");
答案 2 :(得分:2)
刚
s.replaceAll("\"", "");
删除字符串中的所有“字符。
或在你的情况下
testValue.toString().replaceAll("\"", "");
答案 3 :(得分:1)
您可以将值作为String本身获取,不需要强制转换或替换:
JSONObject childJSONObject = (JSONObject) test.get(i);
String testValue = childJSONObject.getString("name");
它将返回一个没有引号的字符串。
更多信息:JSONObject
答案 4 :(得分:1)
如果使用javax.json.JsonArray 你可以得到一个JsonValue的字符串:
JsonArray array = jsonObject.getJsonArray("languages");
for (int i=0; i<array.size(); i++) {
System.out.println(array.getJsonString(i).getString());
}
答案 5 :(得分:1)
引号取决于使用的JSON库:
org.codehaus.jettison.json.JSONArray 要么 org.json.JSONArray
答案 6 :(得分:1)
该线程很旧,但是一个小时前我偶然发现了相同的问题,并找到了正确的解决方案。您必须检查JsonValue的类型,如果它是JsonString,则可以将其解析为JsonString并调用其getString()方法。
if(val.getValueType().equals(JsonValue.ValueType.STRING)) {
c.setValue(((JsonString) val).getString());
} else {
c.setValue(val.toString());
}
答案 7 :(得分:0)
最佳选择是使用JSONObject的.getString()
方法或String的.valueOf()
方法。
您也可以使用.replaceAll("\"","")
,但是当字符串本身包含"
(双引号)时,这会有一些问题。因此,请避免使用replaceAll()方法来摆脱意外问题。
但是,如果您想要自己编写代码或者如果您想知道如何在不使用getString() and .valueOf()
的情况下删除双引号,则可以尝试这样做
testValue.toString().subString(1,testValue.toString().length())
它将给出不包括String的第一个和最后一个字符的子字符串。但是,这似乎是一些混乱的事情。
答案 8 :(得分:0)
假设com.google.gwt.json.client.*
在这里(来自问号标签并使用JSONValue
,这在其他地方几乎找不到),toString()
旨在为您提供值的JSON表示。
此处,值为JSONString
,因此您需要使用:
testValue.isString().stringValue()
答案 9 :(得分:0)
您可以使用以下代码获取不带双引号的字符串
JsonObject childJSONObject = new JsonObject();
JSONValue testValue = childJSONObject.get("name").getAsString();
这将为字符串提供不带双引号" "
的字符串
答案 10 :(得分:0)
String mailMessage = JSONObject.toJSONString(“ JsonObject”)。replace(“ \”“,”“).trim();
答案 11 :(得分:-1)
JSON.parse(JSON.Stringify(this_has_quotes));
你需要的一切! JSON.Stringify()
将相应地获取密钥的值。 JSON.parse()
将解析您的价值并返回&#34;干&#34;价值没有报价。
答案 12 :(得分:-1)
对我有用的是
defect.get("FormattedID").toString().substring(1,defect.get("FormattedID").toString().length()-1)