(Swift)如何用struct解析JSON?

时间:2015-11-10 06:46:35

标签: json swift

我想用结构解析JSON并命名它。

这是JSON数据:

{
"sgList": [
    {
        "ID": 11113,
        "Name": "soss",
        "Price": "10.0000",
        "BigImagesUrl": "http://192.165.1.19:886/img/1/2015/7/11/20157111429315728.png",
        "SmallImagesUrl": "http://192.165.1.19:886/img/1/2015/7/11/20157111429315728.png"
    },
    {
        "ID": 11958,
        "Name": "1017p-02",
        "Price": "0.0000",
        "BigImagesUrl": "http://192.165.1.13:886/img/rar-upload/f82f22ce-4a33-4ba2-a31d-4bae473f5d48/pics/797_1.jpg",
        "SmallImagesUrl": "http://192.165.1.13:886/img/rar-upload/f82f22ce-4a33-4ba2-a31d-4bae473f5d48/pics/797_1-[135-135].jpg"
    }
]
}

我花了几个小时才得到它! 请帮帮我,非常感谢你!

2 个答案:

答案 0 :(得分:1)

如果您不想要第三方库并自己动手,那就非常简单了。 假设您的JSON字符串位于名为jsonString

的变量中
let data = jsonString.dataUsingEncoding(NSUTF8StringEncoding)!
let json = try! NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments)

然后您可以通过subsript访问您的数据。例如,如果您想要 sgList 中的第二个对象的名称

json["sgList"][1]["Name"]

答案 1 :(得分:0)

您可以使用SwiftyJSON执行此类操作:

import SwiftyJSON

struct SqList {
    let sqList: Array<SqElement>

    init(json: JSON) {
       let sqArray = json["sqList"].arrayValue.flatMap { SqElement(json: $0) } 
       self.sqList = sqArray
    }
}

struct SqElement {
    let id: String
    let name: String
    let price: String
    let bigImagesUrl: String
    let smallImagesUrl: String

    init?(json: JSON) {
        guard
            let id = json["ID"].string,
            let name = json["Name"].string,
            let price = json["Price"].string,
            let bigImagesUrl = json["BigImagesUrl"].string,
            let smallImagesUrl = json["SmallImagesUrl"].string
        else { return nil }

        self.id = id
        self.name = name
        self.price = price
        self.bigImagesUrl = bigImagesUrl
        self.smallImagesUrl = smallImagesUrl
    }
}

在代码中,您只需致电:

let sqList = SqList(json: JSON(data: dataWithJSON))