首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可编码/可解码不是解码

可编码/可解码不是解码
EN

Stack Overflow用户
提问于 2017-07-10 05:56:59
回答 1查看 384关注 0票数 0

有人能帮我一下吗?我在这个例子中使用了Playground,这样您就可以将整个代码放入您的游乐场并查看结果。

我发现当我删除这一行时:

代码语言:javascript
复制
 "address_format": "{{recipient}}\n{{street}}\n{{postalcode}} {{city}}\n{{country}}",

好像很管用。

(验证了JSON )

代码语言:javascript
复制
import UIKit

struct Country : Decodable {

    enum CodingKeys: String, CodingKey {
        case continent
        case alpha2
        case name
    }

    var name : String?
    var continent : String?
    var alpha2 : String?

}

let json = """
[
{
"continent": "Europe",
"alpha2": "AD",
"alpha3": "AND",
"country_code": "376",
"currency": "EUR",
"international_prefix": "00",
"ioc": "AND",
"latitude": "42 30 N",
"longitude": "1 30 E",
"name": "Andorra",
"names": [
"Andorre",
"Andorra",
"アンドラ"],
"translations": {
"en": "Andorre",
"it": "Andorra",
"de": "Andorra",
"fr": "Andorre",
"es": null,
"ja": "アンドラ",
"nl": "Andorra",
"ru": "Андорра"},
"national_destination_code_lengths": [2],
"national_number_lengths": [6,7,8,9],
"national_prefix": "None",
"number": "020",
"region": "Europe",
"subregion": "Southern Europe",
"un_locode": "AD",
"languages": ["ca"],
"nationality": "Andorran"},
{
"continent": "Asia",
"address_format": "{{recipient}}\n{{street}}\n{{postalcode}} {{city}}\n{{country}}",
"alpha2": "AE",
"alpha3": "ARE",
"country_code": "971",
"currency": "AED",
"international_prefix": "00",
"ioc": "UAE",
"latitude": "24 00 N",
"longitude": "54 00 E",
"name": "United Arab Emirates",
"names": [
"United Arab Emirates",
"Vereinigte Arabische Emirate",
"Émirats Arabes Unis",
"Emiratos Árabes Unidos",
"アラブ首長国連邦",
"Verenigde Arabische Emiraten"],
"translations": {
"en": "United Arab Emirates",
"it": "Emirati Arabi Uniti",
"de": "Vereinigte Arabische Emirate",
"fr": "Émirats Arabes Unis",
"es": "Emiratos Árabes Unidos",
"ja": "アラブ首長国連邦",
"nl": "Verenigde Arabische Emiraten",
"ru": "Объединенные Арабские Эмираты"},
"national_destination_code_lengths": [2],
"national_number_lengths": [7,8,9],
"national_prefix": "0",
"number": "784",
"region": "Asia",
"subregion": "Western Asia",
"un_locode": "AE",
"languages": ["ar"],
"nationality": "Emirian"}
]
""".data(using: .utf8)!

let decoder = JSONDecoder()
do {
    let countries = try decoder.decode([Country].self, from: json)
    print(countries)

} catch {
    print("erro")
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-10 06:41:10

如果要打印实际错误信息

“字符722周围的未转义控制字符。”

与无意义的文本字符串"erro"相比,解决方案是显而易见的:

必须转义行提要字符\n

代码语言:javascript
复制
"address_format": "{{recipient}}\\n{{street}}\\n{{postalcode}} {{city}}\\n{{country}}",

你可以用

代码语言:javascript
复制
let json = """
[
...
]
""".replacingOccurrences(of: "}\n{", with: "}\\n{").data(using: .utf8)!
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45004659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档