快速从字典数组中获取无效的 JSON 数组
Posted
技术标签:
【中文标题】快速从字典数组中获取无效的 JSON 数组【英文标题】:Getting invalid JSON array from array of dictionaries in swift 【发布时间】:2015-04-16 12:09:36 【问题描述】:我想从我拥有的数组中创建 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 格式?
【问题讨论】:
你是如何使用 var d 的?写更多关于 var data 和 var d 的内容 我更新了代码。我遍历列表并创建字典d
并将它们添加到字典列表data
。然后我将所有内容都转换为 JSON,但我得到的是 [[],[],[]]
而不是 [,,]
尝试将 [NSDictionary]() 更改为 [[String:AnyObject]]()
试过了。它不起作用
你怎么看你得到了什么?你打印 jsonObj 吗?
【参考方案1】:
您正在将 Swift
CollectionType
转换为 JSON (bytes
),然后将其转换回 (jsonObj
)。
在这种情况下,bytes
是 JSON
和 NSData
,jsonObj
是 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)
【讨论】:
只有一个子问题。当将此发送到网络服务时,我应该发送jsonString
就像你在这里写的那样。我说的对吗?
是的,你可以像普通字符串一样发送它。
好的。非常比你。以上是关于快速从字典数组中获取无效的 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章
使用 almaofire 快速获取字典的所有值并传递给视图控制器