从 JSONArray 输出中删除引号

2022-09-04 05:38:45

在成功的调用中,我得到了带有键“对象”的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

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:指示字符串的最后一个字符。

对于你的情况,如果.getString()不起作用,.substring()方法比.replaceAll()更好。

3. .ValueOf() OR .getString()

不知道在你的情况下为什么它不起作用?(可能是因为字符串本身包含引号)其他明智的方法是将JSONValue转换为字符串作为String.ValueOf(testValue);

childJSONObject.getString("name");

否则优先顺序为: 3 > 2 > 1


答案 2

将 JSONValue 转换回字符串:

String.ValueOf(testValue);

childJSONObject.getString("name");

经过所有这些,仍然以引号结束 - 然后回到正则表达式。

testValue.toString().replaceAll("\"", "");