【问题标题】:Save JSON String in Object将 JSON 字符串保存在对象中
【发布时间】:2018-06-07 20:47:44
【问题描述】:

我想将 JSON 字符串保存到 Swift 中的现有对象中:

这是我的对象:

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 数据字符串是该答案的一部分:

Answer(api_version: 1, result: "login", success: true, token: "da39a3ee5e6b4b0d3255bfef95601890afd80709", data: "{\"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 对象中的另一种方法。 我真的很感激,非常感谢你们!

【问题讨论】:

  • 向我们展示str 的确切值。并在您的catch:print("Error serializing: \(error)") 中打印错误。
  • str = String = "{"user_rights":["terminal_create"]}"
  • 错误序列化:keyNotFound(CodingKeys(stringValue: "userRights", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \ "userRights\", intValue: nil) (\"userRights\").", underlyingError: nil))

标签: json swift string serialization encoding


【解决方案1】:

您的编码密钥与字符串中的内容不相似 userRightsuser_rights

这样做:

struct Benutzer: Codable {
        let userRights: [String]

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

【讨论】:

  • 非常感谢我完全忽略了这一点!现在它起作用了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多