RDX
RDX

Reputation: 1

Reading JSON with multiple dictionaries and arrays into Swift

I am trying to separate out before, range and after from the JSON below and store them in different arrays/dictionaries. However I am able to parse only range. Can anyone please help with an example?

{
    "before": [
        {
            "segment": 1,
            "end": 0,
            "size": 0
        },
        {
            "segment": 2,
            "end": 0.01,
            "size": 0.1
        }
    ],
    "range": [
        100,
        101,
        102,
        103,
        104,
        105,
        106,
        107,
        108,
        109,
        110
    ],
    "after": [
        {
            "segment": 1,
            "end": 0,
            "size": 0
        },
        {
            "segment": 2,
            "end": 0.5,
            "size": 0.1
        },
        {
            "segment": 3,
            "end": 0.8,
            "size": 0.3
        },
        {
            "segment": 4,
            "end": 1,
            "size": 0.5
        }
    ]
}

Upvotes: 0

Views: 623

Answers (1)

Eric Aya
Eric Aya

Reputation: 70118

All you have to do is to cast the content to the right type.

You JSON object is a dictionary; "before" is an array of dictionaries, "after" is similar, and "range" is an array of Ints.

Knowing this, it's easy to decode:

if let json = try? NSJSONSerialization.JSONObjectWithData(data, options: []) {
    if let dict = json as? [String:AnyObject] {
        if let before = dict["before"] as? [[String:AnyObject]] {
            print(before)
        }
        if let after = dict["after"] as? [[String:AnyObject]] {
            print(after)
        }
        if let range = dict["range"] as? [Int] {
            print(range)
        }
    }
}

Upvotes: 2

Related Questions