Search code examples
iosjsonswiftswifty-jsonnsjsonserialization

Swifty Json parsing


I am using SwiftyJson library for parsing my following json

{
    "data": {
        "id": "12345",
        "messages": {
            "message": "{\"data\":{\"msg\":\"HelloMsg\"}}"
        }
    }
}

I tried to use following code to get msg parameter

let json = JSON(data)
let msg = JSON(json["data"]["messages"]["message"])
msg["data"]["msg"].stringValue

However, I could not get the value of msg parameter. What shall I do to get HelloMsg?


Solution

  • The content of the "message" field is not parsed JSON, it's a JSON string.

    Use SwiftyJSON's JSON(parseJSON:) initializer to accept a string as input and parse it as JSON:

    let messages = json["data"]["messages"]["message"].stringValue
    let innerJSON = JSON(parseJSON: messages)
    let msg = innerJSON["data"]["msg"].stringValue // "HelloMsg"