将 JSON 数据转换为字典
Posted
技术标签:
【中文标题】将 JSON 数据转换为字典【英文标题】:Convert JSON Data into Dictionary 【发布时间】:2016-09-12 06:25:10 【问题描述】:我正在尝试将此 JSON 数据转换为 Dictionary
,但我不知道该 JSON 中的数据将如何构造。我认为我的检测 JSON 结构的代码是错误的。
JSON 响应
[
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
,
"userId": 2,
"id": 2,
"title": "et ea vero quia laudantium autem",
"body": "delectus reiciendis molestiae occaecati non minima eveniet qui voluptatibus\naccusamus in eum beatae sit\nvel qui neque voluptates ut commodi qui incidunt\nut animi commodi"
]
这是我的代码:
enum postResult
case Success([Post]) //return array of post
case Failure(ErrorType)
//
func postsFromJSONData(data:NSData)->PhotosResult
do
let jsonObject : AnyObject = try NSJSONSerialization.JSONObjectWithData(data,options:[])
guard let jsonDictionary = jsonObject as? [NSObject:AnyObject],
postsArray = ["userId"] as? [[String:AnyObject]] else
return.Failure(InvalidError.InvalidJSONData)
var finalPosts = [post]()
return.Success(finalPosts)
catch let error
return.Failure(error)
【问题讨论】:
先获取json数据数组后获取字典。请检查您的 json 数据 'jsoneditoronline.org' 站点在字典后数组中的第一个 0 索引。 您可以使用 SwiftyJSON 进行良好的 json 持久化练习...:) 【参考方案1】:您的响应是数组而不是字典,因此您需要从数组访问对象,而且您的 userId
键包含数字而不是 Array/Dictionary
。
let jsonObject = tryNSJSONSerialization.JSONObjectWithData(data,options:[]) as! [[String: AnyObject]]
if jsonObject.count > 0
if let userId = jsonObject[0]["userId"] as? Int
print(userId)
【讨论】:
以上是关于将 JSON 数据转换为字典的主要内容,如果未能解决你的问题,请参考以下文章
如何将返回的python JSON字典转换为字典中的列表,并将数据转换为SQL插入
如何将afnetworking json字典转换为字符串,然后在IOS中将字符串转换为字典?
将带有嵌套字典的json响应转换为pandas数据框[重复]