【发布时间】:2016-07-30 19:20:17
【问题描述】:
我正在尝试解析一个 .json 文件,但我以为我快结束了,发生了错误:
无法将“__NSCFBoolean”(0x10c8ba3b8) 类型的值转换为“NSString”(0x10ccb2b48)。
我已经完成了我的研究,我发现(惊讶地)我的 .json 中有一些布尔值在字符串的舞台上乱七八糟...
那么我该如何避免这种情况呢?在尝试将 bar["tags"] 放入 String 之前,我已经查找了一些方法可以给我 bar["tags"] 的类型,但我找不到..
这是 .json 和我的(太长的)代码的摘录:
...{
"id": 3906,
"address": "L\u2019Hotel le 123 Sebastopol 23, boulevard S\u00e9bastopol, Paris, 75002, Le Louvre, Paris",
"name": "123 Sebastopol",
"url": "/bar/paris/le-louvre/123-sebastopol",
"image_url": "https://prh-wbb-prod.s3.amazonaws.com/generic_640_480/WBB%20holding%20image3_54abcf7d218d1_55b8d2128eabb.jpg",
"tags": "Hotel, Cocktail, Terrace",
"latitude": 48.867598851356,
"longitude": 2.3533117460327
}, {
"id": 1523,
"address": "73 Rue d\u0027Aboukir, 75002 Paris, France, Le Louvre, Paris",
"name": "Lockwood",
"url": "/bar/paris/le-louvre/lockwood",
"image_url": "https://prh-wbb-prod.s3.amazonaws.com/bar_640_480/lockwood_001_553f5b2c99f4b.jpg",
"tags": false,
"latitude": 48.867716087563,
"longitude": 2.3469846706722
}...
我的代码:
id = (bar["id"] as? Int)!
name = (bar["name"] as? String)!
adress = (bar["address"] as? String)!
url = (bar["url"] as? String)!
image_url = (bar["image_url"] as? String)!
tags = (bar["tags"] as? String)!
latitude = (bar["latitude"] as? Double)!
longitude = (bar["longitude"] as? Double)!
【问题讨论】:
-
在您的 JSON
"tags": false,中。这是导致错误的原因。 -
您的第一个存根将 tags 显示为字符串,第二个存根将其显示为布尔值。这就是错误的原因。
-
这一行会引发错误 tags = (bar["tags"] as?String)! “标签”应该是一个字符串(200/208)所以我只想用一个空字符串替换 false
标签: ios json string swift boolean