簡體   English   中英

使用包含雙引號的 URL 解析 json - swift

[英]parse json with URL which contains double quotes - swift

我正在嘗試使用包含雙引號的 URL 值解碼 json,但我總是收到“給定的數據不是有效的 JSON”。 或“無效的 URL 字符串”。 解碼對象時出錯。

let data = Data("""{ "contentUrl":"https://somedomain.come/folder/1-test_Romio's-\"Video-?hl=en-GB" }
""".utf8)


do {
    let decoder = JSONDecoder()
    let object = try decoder.decode(Model.self, from: data)

    print(object)
} catch {
    print(error)
}


struct Model: Codable {
    let contentUrl: URL
}

考慮到 url 是根據用戶輸入生成的,因此用戶可以輸入 " 雙引號,如何在 url 中轉義這個雙引號?

JSON 規范要求字符串中的雙引號前面加上反斜杠。

在 Swift 中這個字符串

"aString \" With a Double Quote" 

有一個雙引號,前面沒有反斜杠。

要獲得一個帶有反斜杠和引號的字符串,它必須是:

"aString \\\" With a Double Quote"

您應該將示例更改為:

"{ "contentUrl":"https://somedomain.come/folder/1-test_Romio's-\\\"Video-?hl=en-GB" }"

這將使它成為有效的 JSON,盡管它仍然不是有效的 URL。 要成為有效的 URL,您必須使用百分比轉義編碼來轉義雙引號

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM