json - 从 swift 字典数组中获取无效的 JSON 数组

标签 json swift nsdictionary nsjsonserialization

我想从我拥有的数组创建 JSON 数组字符串。但是我收到无效的 JSON。
这就是我想要的:

[
    {
        "validationCode": null,
        "FirstName": "Samer",
        "LastName": "Shame",
        "MobileNumber": "0991992993",
        "SimNumber": null,
        "Email": null,
        "PhoneNumber": "0991992994",
        "Name": "Abo Alshamat",
        "ID": 1
    },
    {
        "validationCode": null,
        "FirstName": "Ahmad",
        "LastName": "Ali",
        "MobileNumber": "0992993994",
        "SimNumber": null,
        "Email": null,
        "PhoneNumber": "0992993995",
        "Name": "AL-Kamal",
        "ID": 2
    }
]

这就是我得到的:

[
    [
        "validationCode": null,
        "FirstName": "Samer",
        "LastName": "Shame",
        "MobileNumber": "0991992993",
        "SimNumber": null,
        "Email": null,
        "PhoneNumber": "0991992994",
        "Name": "Abo Alshamat",
        "ID": 1
    ],
    [
        "validationCode": null,
        "FirstName": "Ahmad",
        "LastName": "Ali",
        "MobileNumber": "0992993994",
        "SimNumber": null,
        "Email": null,
        "PhoneNumber": "0992993995",
        "Name": "AL-Kamal",
        "ID": 2
    ]
]

这是代码:

var data = [NSDictionary]()
for item in someList {
    var d = ["validationCode": null,
            "FirstName": item.prop1,
            "LastName": item.prop2,
            "MobileNumber": item.prop3...]

    data.append(d)
}
var bytes = NSJSONSerialization.dataWithJSONObject(data, options: NSJSONWritingOptions.allZeros, error: nil)
var jsonObj = NSJSONSerialization.JSONObjectWithData(bytes!, options: nil, error: nil) as! [Dictionary<String, String>]

我应该怎么做才能获得标准的 JSON 格式?

最佳答案

您正在将 Swift CollectionType 转换为 JSON(bytes),然后将其转换回来(jsonObj) .

在这种情况下,bytesJSON 作为 NSDatajsonObj 是 Swift CollectionType.

因此,当您print(jsonObj) 时,您并不是在打印JSON,而是在打印集合。

获取真正的JSON

print(NSString(data: bytes, encoding: NSUTF8StringEncoding))

在这里您将看到正确的 JSON 格式。

在 Swift 中,JSON 是一个字符串。不是对象。


你的代码应该是这样的:

let json = NSJSONSerialization.dataWithJSONObject(data, options: nil, error: nil)!

let jsonString = NSString(data: json, encoding: NSUTF8StringEncoding)!

println(jsonString)

关于json - 从 swift 字典数组中获取无效的 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29674307/

相关文章:

json - 将对象的 json 数组解析为其适当的案例类

javascript - 解析 JSON 后元素消失

html - 如何调整 webview 内容(包括图像)的大小以水平适应边界

ios - plist文件中的NSArray或NSDictionary

ios - 如何从 json 的本地文件检索数据到 Objective C iOS 中的字典

c# - 解析 JSON 结果 - C#

javascript - Angular2 无法映射单个 JSON 对象?

ios - Command/Xcode.app/Contents/Developer/Toolchains/Swift_2.3.xctoolchain/usr/bin/swiftc 失败,退出代码为 1

swift - 在 swift playground 中复制声明

ios - NSDictionary objectForKey : string issue