2017-05-02 40 views
0

我有以下的JSON數組我使用POST方法將其發送到後端:錯誤的JSON數組在Java中,並添加回URL削減

{"images": 
    [["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"]], 
"skus":[" 
    {\"id\":5179846254657536,\"coordinates\":\"137,447,692,438,690,610,140,617\",\"sku\":\"Biscotti\"}", 
    "{\"id\":5656058538229760,\"coordinates\":\"0,116,303,104,310,264,2,282\",\"sku\":\"Riso\"}", 
    "{\"id\":5765606242516992,\"coordinates\":\"140,614,675,610,673,751,145,755\",\"sku\":\"Succo\"}"], 
"percentage":"33", 
"model":5682617542246400, 
"shelf":5660980839186432 
} 

在Java中我試圖把它作爲JSON陣列以下代碼:

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

的問題是,在Java我看到數組的值如下:

[["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"]] 

和for循環,每個lement的值是這樣的:

[["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"]] 

我不知道是什麼問題!

+0

對於添加反斜槓。我在Android中看到了這個標準的JSON API。據說他們使用這種邏輯能夠在GET請求中使用這些值。如果這確實是個問題,或者使用相同的API來解碼,則可以使用其他API。對於數組,因爲你的json.getJSONArray(「images」);'但是在你的JSON中沒有看到任何'images'鍵,這個答案很複雜。您可能需要發佈[mcve]以查找未知數 – AxelH

+0

我已更新JSON – Majico

+2

您有一個數組數組,因此您想要的數組實際上位於imagesToProcess [0]中。但是這應該會輸出一個'[「https:\/\/...'不是'[[」https:\/\/...' – AxelH

回答

1

要將可能回答爲了獲得數組數組的值,這看起來像編碼錯誤,因爲第一個數組是1個單元格。所以得到那個單元格中的數組然後迭代,你有一個正確的代碼。

然後對轉義字符,你可以在RFC 7159 - The JavaScript Object Notation (JSON) Data Interchange Format

看到從7.字符串

任何字符可以被轉義。

但沒有說明哪一個,你可以在一個例子中看到:

"Thumbnail": { 
      "Url": "http://www.example.com/image/481989943", 
      "Height": 125, 
      "Width": 100 
}, 

的URL沒有逃逸「/」,所以這是特定的API。

有了解的如此喜歡這個問題的問題:

+0

中找到它。感謝您提供您的評論作爲回答:) – Majico

+0

@Majico歡迎您,請注意,我已更新轉義部分。 – AxelH

2

之所以發生這種情況:

一個有效的JSON字符串將總是先「/」爲代表含有「\」。

見圖片:

JSON String Representation

什麼JAVA請問這裏是 「/」 前加上 「\」 的JSON轉換爲有效的JSON。

解決方案是處理Java中的字符串,並將其通過從字符串

轉換爲原始格式「\」字符OCCURENCES對於您可以參考答案: remove-all-occurrences-of-char-from-string