iOS swift 3.0 本地 JSON 解析崩溃
Posted
技术标签:
【中文标题】iOS swift 3.0 本地 JSON 解析崩溃【英文标题】:iOS swift 3.0 local JSON parsing crash 【发布时间】:2016-09-29 09:10:25 【问题描述】:我在我的 swift 项目中使用本地 JSON。我需要提取数组中的数据。我遇到了意外的崩溃。
我的 JSON 是:
cueca = (
agentName = "Sant";
applicationName = "Get CDR Avaya";
body = "Detail of the message.";
imageType = 1;
messageType = 1;
requestTime = "2016-01-01 00:00:04";
sendTime = "2016-01-01 00:00:04";
subject = "Mensagem 05";
,
agentName = "Sant2";
applicationName = "Script Programming2";
body = "Detail of the message.";
imageType = 1;
messageType = 1;
requestTime = "2016-01-01 00:00:03";
sendTime = "2016-01-01 00:00:03";
subject = "Mensagem 04";
);
我的代码是:
let file = Bundle.main.path(forResource: "ABC", ofType: "json")! as NSString
let url = URL(fileURLWithPath: file as String)
let data = try! Data(contentsOf: url)
let json = try! JSONSerialization.jsonObject(with: data)
我的问题是:
致命错误:“试试!”表达式意外引发错误:错误域 = NSCocoaErrorDomain 代码 = 3840“字符 6 周围的对象中的值没有字符串键。” UserInfo=NSDebugDescription=在字符 6. 附近的对象中没有值的字符串键:文件 /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-800.0.46.2/src/swift/stdlib/public/core/ ErrorType.swift,第 178 行
我需要获取“cuaca”中的所有对象,我可以使用该数组以供进一步使用。
【问题讨论】:
这意味着不是一个有效的 json ,检查一次你的 JSON 文件 【参考方案1】:崩溃是因为文件路径为 nil 或 url 为 nil 或数据为 nil。请添加零检查。试试下面的代码
if let file:String = Bundle.main.path(forResource: "ABC", ofType: "json")
if let url:URL = URL(fileURLWithPath: file)
if let data:NSData = NSData(contentsOf: url as URL)
do
_ = try JSONSerialization.jsonObject(with: data as Data, options: JSONSerialization.ReadingOptions())
catch
print(error)
【讨论】:
【参考方案2】:如果您从服务器或其他任何地方获取 json 数据,最后它是一个有效的 json
数据问题,只需在创建 json
点头时尝试纠正错误,而在您的数据中,您有 cueca
对象数组2 代理记录。
有效JSON
示例:
"cueca": [
"agentName": "Sant",
// data so on
,
"agentName": "Sant2",
// data so on
]
这里的字典 cueca
包含一个 [ ] 数组 的记录。
【讨论】:
以上是关于iOS swift 3.0 本地 JSON 解析崩溃的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 3.0 中访问从 iTunes API 解析的 JSON 对象