在JAVA中,错误的JSON数组,并在URL中添加了反斜杠。

16 浏览
0 Comments

在JAVA中,错误的JSON数组,并在URL中添加了反斜杠。

我有一个JSON数组,我使用POST方法将其发送到后端:\n{\n \"images\": [\n [\n \"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test1.jpg\",\n \"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test2.jpg\",\n \"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test3.jpg\",\n \"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test5.jpg\"\n ]\n ],\n \"skus\": [\n \"{\\\"id\\\":5179846254657536,\\\"coordinates\\\":\\\"137,447,692,438,690,610,140,617\\\",\\\"sku\\\":\\\"Biscotti\\\"}\",\n \"{\\\"id\\\":5656058538229760,\\\"coordinates\\\":\\\"0,116,303,104,310,264,2,282\\\",\\\"sku\\\":\\\"Riso\\\"}\",\n \"{\\\"id\\\":5765606242516992,\\\"coordinates\\\":\\\"140,614,675,610,673,751,145,755\\\",\\\"sku\\\":\\\"Succo\\\"}\"\n ],\n \"percentage\": \"33\",\n \"model\": 5682617542246400,\n \"shelf\": 5660980839186432\n}\n\n在Java中,我尝试将其作为JSON数组获取,使用以下代码:\n

imagesToProcess = json.getJSONArray("images");
for(int i = 0; i < imagesToProcess.length(); i++){
    String src="";
    src = imagesToProcess.getString(i);
}

\n问题是在Java中,我看到数组的值如下:\n[[\"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test1.jpg\",\"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test2.jpg\",\"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test3.jpg\",\"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test5.jpg\"]]\n\n并且在循环中,每个元素的值如下:\n[[\"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test1.jpg\",\"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test2.jpg\",\"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test3.jpg\",\"https:\\/\\/storage.googleapis.com\\/shelf-prove\\/test5.jpg\"]]\n\n我不知道问题出在哪里!

0
0 Comments

错误的JSON数组在JAVA中,以及在URL中添加了反斜杠的问题是由于编码错误导致的。首先,您正在尝试获取一个数组的值,该数组是一个数组的错误编码,因为第一个数组只有一个单元格。所以获取该单元格中的数组,然后迭代,您有一个正确的代码。

然后,关于转义字符,您可以在RFC 7159 - JavaScript对象表示法(JSON)数据交换格式中看到:

引用:

任何字符都可以进行转义。

但是没有关于哪个字符的规定,您可以在一个示例中看到:

"Thumbnail":{

"Url":"http://www.example.com/image/481989943",

"Height":125,

"Width":100

},

URL没有转义“/”,所以这是特定于API的。

在SO上有关于这个问题的问题,例如:

JSON:为什么斜杠被转义?

为什么斜线在JSON中是可以转义的?[重复]

感谢您将您的评论作为答案提供 🙂

欢迎,注意我已经更新了转义部分。

0
0 Comments

问题原因:

在JAVA中,一个有效的JSON字符串在表示时,斜杠“/”之前必须包含反斜杠“\”。

解决方法:

可以通过在JAVA中处理字符串,并从字符串中移除“\”字符的出现来将其转换回原始格式。

代码示例:

String jsonString = "{'name':'John\/Doe'}";
String processedString = jsonString.replaceAll("\\\\", "");
System.out.println(processedString);

输出结果:

{'name':'John/Doe'}

参考链接:

[remove-all-occurrences-of-char-from-string](https://stackoverflow.com/questions/4576352)

0