首页 > 解决方案 > Swift 4 将字符串解析为 json 对象

问题描述

我已经实现了二维码扫描器,在“metadataOutput”委托方法中,我收到了具有“stringValue”之类键的响应,该键的值是

stringValue "'{ "part_number":"154100102232", "lot_number":"03S32401701344"}'"

我想将字符串值解析为 json 对象,但我无法做到这一点。

let data = stringValue.data(using: .utf8)!
            do {
                if let json = try JSONSerialization.jsonObject(with: data, options : .allowFragments) as? [AnyHashable:Any]
                {

                    print("Json:::",json)
                    // post a notification
                   // NotificationCenter.default.post(name: NSNotification.Name(rawValue: "SCANNER_DATA"), object: nil, userInfo: json)

                } else {
                    print("bad json")
                }
            } catch let error as NSError {
                print(error)
            }

我已经按照上述方法将字符串解析为 json,但我发现了以下错误。

错误域 = NSCocoaErrorDomain 代码 = 3840 “字符 0 周围的值无效。” UserInfo={NSDebugDescription=字符 0 周围的值无效。}

任何人都可以对此有任何想法吗?

标签: iosjsonswiftparsingqr-code

解决方案


最好像这样对 String 进行扩展

 extension String{
    func toDictionary() -> NSDictionary {
        let blankDict : NSDictionary = [:]
        if let data = self.data(using: .utf8) {
            do {
                return try JSONSerialization.jsonObject(with: data, options: []) as! NSDictionary
            } catch {
                print(error.localizedDescription)
            }
        }
        return blankDict
    }
}

像这样使用

let dict = stringValue.toDcitionary()

或者你可以在 github https://github.com/utills/UtilityKit上使用 pod 来完成 UtilityKit 的所有这些工作


推荐阅读