无法将json字符串转换为json对象

时间:2017-11-14 13:11:38

标签: ios json swift string serialization

let dictionaryToJsonObject: [String: Any]

let Dictionary: [String: Any] = ["FirstName": "John", "Email": "Jo@sm.com", "Password": "john@123", "LastName": "Smith", "Organization": ["Type": 5, "Name": "IT"]]

do {
    let jsonData = try JSONSerialization.data(withJSONObject: Dictionary as Any, options: .prettyPrinted)
    let jsonText = String(data: jsonData,
                          encoding: .ascii)

    print("JSON string = \(jsonText!)")

    if JSONSerialization.isValidJSONObject(jsonText!) {
        print("Valid")
    } else {
        print("Not Valid")
    }

}catch {
    print(error.localizedDescription)
}

输出将是: -

JSON string = {
  "FirstName" : "John",
  "Email" : "Jo@sm.com",
  "Password" : "john@123",
  "LastName" : "Smith",
  "Organization" : {
    "Type" : 5,
    "Name" : "IT"
  }
}

预期结果:

{   
    FirstName:"John",
    Email:"Jo@sm.com",
    Password:"john@123",
    LastName:"Smith",
    Organization:{
        Type:5,
        Name:"IT"
        }
}

1 个答案:

答案 0 :(得分:0)

如果你想以json对象形式获取它,那么你的代码应该是,

  let dictionaryToJsonObject: [String: Any]

    let Dictionary: [String: Any] = ["FirstName": "John", "Email": "Jo@sm.com", "Password": "john@123", "LastName": "Smith", "Organization": ["Type": 5, "Name": "IT"]]

    do {
        let jsonData = try JSONSerialization.data(withJSONObject: Dictionary as Any, options: .prettyPrinted)
        let jsonObject = try JSONSerialization.jsonObject(with: jsonData, options: .init(rawValue: 0))


        print("JSON string = \(jsonObject)")

        if JSONSerialization.isValidJSONObject(jsonObject) {
            print("Valid")
        } else {
            print("Not Valid")
        }

    }catch {
        print(error.localizedDescription)
    }

,你的输出将是,

JSON string = {
Email = "Jo@sm.com";
FirstName = John;
LastName = Smith;
Organization =     {
    Name = IT;
    Type = 5;
};
    Password = "john@123";
}
Valid

最终,我认为这是你宣布的词典本身!