json - 在 Swift 上使用 Argo 解析 JSON

标签 json swift parsing

我正在尝试使用下一种格式解析 JSON 数据:

[“1”、“字符串”、“”、“0.16”]

这些“奇怪的”json 应该以下一种方式映射到我的对象:

myObject.id = json[0] //"1"
myObject.name = json[1] //"string"
myObject.surname = json[2] // ""
myObject.length = json[3] // "0.16"

我使用Argo进行解析,有我的代码示例

public struct SomeObject {
     public var id: String
     public var name: String
     public var surname: String
     public var length: Float
}

extension SomeObject: Decodable {
    static func create(id: String)(name: String)(surname: String)(length: String) -> SomeObject {
         return SomeObject(id: id, name: name, surname: surname, length: length)
}

    public static func decode(json: JSON) -> Decoded<SomeObject> {
         return SomeObject.create <- actually don't know what to put here, i tried json[0], and decode(json[0]) and casting but still no luck
}

解析此类 JSON 数据的正确方法是什么?

最佳答案

供您引用:

 let ar = ["1", "string", "", "0.16"]

public struct SomeObject {
    public var id: String?
    public var name: String?
    public var surname: String?
    public var length: Float?
}

extension SomeObject {
    static func create(id: String?, name: String?, surname: String?, length: Float?) -> SomeObject {
        return SomeObject(id: id, name: name, surname: surname, length: length)
    }

    public static func decode(json: AnyObject?) -> SomeObject {
        let js = json as! Array<AnyObject>
        return SomeObject.create(js[0] as? String, name: js[1] as? String, surname: js[2] as? String, length: js[3] as? Float)
    }
}

let someObject = SomeObject.decode(ar)

关于json - 在 Swift 上使用 Argo 解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33797957/

相关文章:

javascript - 导航 JSON 对象

swift - 我如何快速调用一个类中的协议(protocol)?

快速添加按钮到 SCNNode

swift - 操作无法完成。 Mach 错误 - 308 (pic/mig) 服务器在 swift 4 和 Xcode 9.2 中死亡

c - 在 C 中使用 strtok() 来换行具有多个分隔符的行

vb.net - 如何找到最接近给定日期字符串的有效日期?

python - 数据库和模型仍然存在 DJango 中出现编程错误

java - 为 jsonObj.getString 返回 null ("key");

javascript - 如何在Arbor js中鼠标悬停在节点上时显示节点的标签

使用 Haskell 解析方案 dottedlist/list