【问题标题】:Using SwiftyJSON package使用 SwiftyJSON 包
【发布时间】:2017-02-28 11:12:57
【问题描述】:

尝试使用 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!如何使用这个库?

【问题讨论】:

  • 尝试像print(json2E)一样只打印json2E并在此处添加控制台日志
  • print json2E 给我这个 27022017 json2E debugDescription null。如果我打印 dataFromString 我得到 142 个字节,所以那里有东西。
  • @user3069232 添加获取 quickfix 字符串的代码?
  • quickfix 的代码已经存在。 let quickfix = String(data: response.1, encoding: String.Encoding.utf8)

标签: ios swift swifty-json


【解决方案1】:

你的代码对我来说看起来不错。您的 JSON 似乎无效。

尝试在其周围放置一个封装对象{}。像这样:

{"blah": [{"xdeltaY":0, "xdeltaX":0, "blah1":435, "blah2":"\/Numbers\/Numbers.001.png", "height":693.2142857142857, "width":1200, "blah3":240}]}

另外确保你使用的是正确的"not

字符串+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
    }
}

【讨论】:

  • 有效!你是对的,括号和引号做到了!
猜你喜欢
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
相关资源
最近更新 更多