22
如何使用swift4的可解码将其解码为Int?这不起作用
let twentyTwo = try? JsONDecoder().decode(Int.self,from: "22".data(using: .utf8)!)它适用于良好的’JsONSerialization和.allowFragments
阅读选项.从 documentation:
allowFragments
SpecifIEs that the parser should allow top-level objects that are not an instance of NSArray or NSDictionary.
例:
let Json = "22".data(using: .utf8)!if let value = (try? JsONSerialization.JsonObject(with: Json,options: .allowFragments)) as? Int { print(value) // 22}
但是,JsONDecoder没有这样的选项,也不接受顶级
不是数组或字典的对象.人们可以在中看到
source code那个decode()方法调用
JsONSerialization.JsonObject()没有任何选项:
open func decode<T : Decodable>(_ type: T.Type,from data: Data) throws -> T { let topLevel: Any do { topLevel = try JsONSerialization.JsonObject(with: data) } catch { throw DeCodingError.dataCorrupted(DeCodingError.Context(CodingPath: [],deBUGDescription: "The given data was not valID JsON.",underlyingError: error)) } // ... return value}总结
以上是内存溢出为你收集整理的Swift 4解码简单的根级json值全部内容,希望文章能够帮你解决Swift 4解码简单的根级json值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)