在对象中保存JSON字符串

时间:2018-06-07 20:47:45

标签: json swift string serialization encoding

我想将JSON-String保存到Swift中的现有Object中:

这是我的对象:

struct Benutzer : Decodable, Encodable{
let userRights: [String]
}

这是我的字符串:

str = "{"user_rights":["terminal_create"]}"

这是我的代码:

do { let data1 = str.data(using: String.Encoding.utf8, allowLossyConversion: false)

let User = try JSONDecoder().decode(Benutzer.self, from: data1 as Data)

print(User)

 }catch{
       print("Error serializing!")
  }

使用此代码,“错误序列化!”每次出现。你们知道什么了吗?对不起,我还是个初学者。很抱歉没有格式化问题我不太明白:(我从另一个JSON请求得到这个字符串:我得到这个答案,我要解码的JSON数据字符串是答案的一部分:

答案(api_version:1,结果:“登录”,成功:true,令牌:“da39a3ee5e6b4b0d3255bfef95601890afd80709”,数据:“{\”user_rights \“:[\”terminal_create \“]}”)

这是一个答案对象:

struct Answer: Decodable, Encodable{

    let api_version: Int
    let result: String
    let success: Bool
    let token: String
    let data: String

}

也许您知道如何将该数据提取到Benutzer对象中的另一种方法。 我真的很感激,非常感谢你们!

1 个答案:

答案 0 :(得分:1)

您的编码密钥与字符串userRightsuser_rights

中的密码不相似

所以这样做:

struct Benutzer: Codable {
        let userRights: [String]

        enum CodingKeys: String, CodingKey {
            case userRights = "user_rights"
        }
    }