尝试使用SwiftyJSON库,但现在挣扎了一天左右。
我有这个JSON。
“blah”:[{“xdeltaY":0,"xdeltaX":0,"blah1":435,"blah2":"\/Numbers\/Numbers.001.png","height":693.2142857142857,"width":1200,"blah3":240}]
我从一个文件中读取它并像这样分配它?
let quickfix = String(data: response.1, encoding: String.Encoding.utf8)
let json2F = JSON(quickfix!)
似乎有效。我可以打印出来。
json2F.debugDescription
但我除此之外什么也做不了。它似乎没有解析,我认为它只是一个字符串。
我无法弄清楚如何访问其中的数据。我也尝试过这个......
if let dataFromString = quickfix?.data(using: .utf8, allowLossyConversion: false) {
let json2E = JSON(data: dataFromString)
print("json2E debugDescription \(json2F.debugDescription)")
}
但它返回null!如何使用这个库?
答案 0 :(得分:1)
你的代码对我来说很好看。您的JSON似乎无效。
尝试在其周围放置一个封装对象{}
。像这样:
{"blah": [{"xdeltaY":0, "xdeltaX":0, "blah1":435, "blah2":"\/Numbers\/Numbers.001.png", "height":693.2142857142857, "width":1200, "blah3":240}]}
另外请确保您使用的是"
而不是”
。
<强>字符串+ JSON 强>
我还想分享一个用于从字符串中获取JSON的扩展,它还会在控制台日志中提供错误消息,以防止无效的JSON弄乱您的程序。
import Foundation
import SwiftyJSON
public extension String {
public func toJSON() -> JSON? {
if let data = self.data(using: String.Encoding.utf8, allowLossyConversion: false) {
var jsonError: NSError?
let json = JSON(data: data, error: &jsonError)
if jsonError == nil {
return json
} else {
print(jsonError!.description)
}
}
return nil
}
public func toJSONValue() -> JSON {
return self.toJSON() ?? JSON.null
}
}