Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除JSONArray中的所有引号 JSONArray error=data.getJSONArray(“error”); 对于(int it=0;it_Java_Arrays_Json_Solr - Fatal编程技术网

Java 删除JSONArray中的所有引号 JSONArray error=data.getJSONArray(“error”); 对于(int it=0;it

Java 删除JSONArray中的所有引号 JSONArray error=data.getJSONArray(“error”); 对于(int it=0;it,java,arrays,json,solr,Java,Arrays,Json,Solr,我知道有什么问题。您没有打印replaceAll调用的结果。要从json数组输出中删除所有引号,请尝试以下操作 JSONArray error = data.getJSONArray("error"); for (int it=0; it<error.length(); it++){ error.toString().replaceAll("\"", " "); System.out.pri

我知道有什么问题。您没有打印
replaceAll
调用的结果。要从json数组输出中删除所有引号,请尝试以下操作

JSONArray error = data.getJSONArray("error");

                for (int it=0; it<error.length(); it++){
             error.toString().replaceAll("\"", " ");
                    System.out.println(error);
                }           

请注意,这也将删除数组值中的任何引号,这可能不是您想要的。例如,
[“cool says\'meow\”,“stuff”]
的输出将是
[cool says\meow\,stuff]
。如果您只想要字符串值,我建议查看文档中的
JSONArray::get(int)
JSONArray::length()

看起来您正试图打印一个json字符串数组。如果您替换所有引号,它也会替换字符串中的引号并扭曲编码的值。如果有人对我这样做,我不会很高兴:)。例如,看看这个json

JSONArray error = data.getJSONArray("error");
System.out.println(error.toString().replaceAll("\"", " "));
不仅引号会丢失,而且度的特殊unicode字符可能看起来不正确(
15°
)。要以原始形式返回值,您需要实现整个!这是很多工作,可能不是你想做的。我以前做过,这不容易

幸运的是,我们已经在使用一个库来为我们完成所有这些:)只需使用
org.json
package。它拥有正确编码和解码值所需的一切。你不认为你必须自己做所有的分析,是吗?要以原始形式打印字符串,可以这样做

[
  "hello",
  "cat says \"meow\"",
  "dog says \"bark\"",
  "the temperature is 15\u00B0"
]
/**使用这些导入
*
*导入org.json.JSONArray;
*导入org.json.JSONObject;
*导入org.json.JSONException;
**/
JSONArray ja=新的JSONArray();
//向数组中添加一些字符串
ja.put(“你好”);
放(“猫说”喵“);
ja.put(“温度为15\u00B0”);
//添加一个int
ja.put(1);
//添加对象
JSONObject jo=新的JSONObject();
乔·普特(“酷”、“酷”);
ja.put(jo);
//循环并仅打印字符串
对于(int i=0;i

要与原始代码一起使用,只需将
ja
替换为您自己的变量即可。注意,在catch子句中,我添加了一些注释,显示了可以用于读取已解析json对象中的值的其他方法。

请提供json示例。你认为
toString().replaceAll(…)
有什么作用?你为什么这么认为?“它没有发生”不是很具体,怎么了?此外,您在数组中循环,甚至从未引用indexCan。请修改您的问题,以解释给定特定输入的预期输出?非常感谢。您能告诉我如何从数组中删除反斜杠和双引号吗?我想删除这个\“这两个字符以及所有的前导和尾随空格。我在上面的代码中给出了一个双斜杠,但它不起作用。它显示编译器错误。用四个反斜杠字符调用
replaceAll
replaceAll(“\\\\”,”)
。你确定这就是你想要的吗?我从来没有发送过这样的代码来修改json字符串,因为我通常希望保留存储在数组项中的值。如果json对象是
[“酷说”喵“]
,那么预期值不应该是
酷说”喵“
?是的,在这种情况下我应该替换\”这只需要双引号,对吗?不仅如此,还必须替换json规范中列出的所有unicode字符。这要复杂得多,需要很多代码。请参阅我的其他解决方案,假设您希望以原始形式打印值。是否有人可以帮助我编辑此问题?我被阻止发布新问题,我有一些疑问,需要澄清experts@user3222718,我只有几个建议调皮地咧嘴笑。解决问题总是从找出问题的原因开始。你对这个问题的描述和标题太宽泛了。给出预期产出的例子。搜索和研究——需要努力。在Stack Overflow的/help部分有一个标准列表,定义了如何提出一个好问题。假装你在和一位忙碌的同事说话:实际上可以多说几句话。拼写、语法和标点符号:需要努力。在代码之前介绍问题:需要工作。
/** use these imports
 *
 * import org.json.JSONArray;
 * import org.json.JSONObject;
 * import org.json.JSONException;
 **/
JSONArray ja = new JSONArray();

// add some strings to array
ja.put("hello");
ja.put("cat says \"meow\"");
ja.put("the temperature is 15\u00B0");

// add an int
ja.put(1);

// add an object
JSONObject jo = new JSONObject();
jo.put("cool", "cool");
ja.put(jo);

// loop and print only strings
for (int i = 0; i < ja.length(); ++i) {
    try {
        // ignore null values
        if (!ja.isNull(i)) {
            System.out.println(ja.getString(i));
        }
    } catch (JSONException e) {
        // not a string
        // try ja.getBoolean
        // try ja.getDouble
        // try ja.getInt
        // try ja.getJSONArray
        // try ja.getJSONObject
        // try ja.getLong
    }
}