从JSONArray输出中删除引号

时间:2014-02-19 11:47:33

标签: java json gwt arrays 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

13 个答案:

答案 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)