【问题标题】:parse json with URL which contains double quotes - swift使用包含双引号的 URL 解析 json - swift
【发布时间】:2021-12-12 08:16:15
【问题描述】:

我正在尝试使用包含双引号的 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 中转义这个双引号,以便用户可以输入“双引号”?

【问题讨论】:

    标签: ios json swift


    【解决方案1】:

    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,您必须使用百分比转义编码来转义双引号

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-17
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多