Swift 中的字符串化字典

Adi*_*tya 4 dictionary stringify swift

我有这个对象 [Dictionary< String: Any>]

[{
"addCity" : "Xyz",
"addLandmark" : "Shopper",
"addCountry" : "Abc",
"addPincode" : "122001",
"isPrimary" : "false",
"addAddress" : "S44",
"addState" : "abc",
"addAddress2" : "Grand Road",
"addContact" : "11111111",
"addName" : "John"
}]
Run Code Online (Sandbox Code Playgroud)

并希望将其转换为:

"{\"addAddress\":\"S44\",\"addAddress2\":\"Grand Road\",\"addCity\":\"Xyz\",\"addContact\":\"11111111\",\"addCountry\":\"abc\",\"addLandmark\":\"Shopper\",\"addName\":\" John\",\"addPincode\":\"122002\",\"addState\":\"abc\",\"isPrimary\":true}"
Run Code Online (Sandbox Code Playgroud)

意味着我必须对上述值进行字符串化并尝试了各种方法但没有找到任何解决方案。

我试过这个

do {
        let arrJson = try JSONSerialization.data(withJSONObject: dataAddress, options: JSONSerialization.WritingOptions.prettyPrinted)
        let string = String(data: arrJson, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))
        let tempJson = string! as String
        print("%%%%%%",tempJson)
    }catch let error as NSError{
        print(error.description)
    }
Run Code Online (Sandbox Code Playgroud)

但它只是以 JSON 形式返回相同的内容。

请任何人都可以帮助我。

BJ *_*ler 6

这可能会奏效,但您可以随心所欲地摆弄它(Swift 3):

typealias JSONDictionary = [String : Any]

func asString(jsonDictionary: JSONDictionary) -> String {
  do {
    let data = try JSONSerialization.data(withJSONObject: jsonDictionary, options: .prettyPrinted)
    return String(data: data, encoding: String.Encoding.utf8) ?? ""
  } catch {
    return ""
  }
}

let dict: JSONDictionary = ["foo": 1, "bar": 2, "baz": 3]
let dictAsString = asString(jsonDictionary: dict)
// prints "{\n  "bar" : 2,\n  "baz" : 3,\n  "foo" : 1\n}"
Run Code Online (Sandbox Code Playgroud)