[英]Change String data from json to NSArray in swift 3
我试图四处搜寻,但找不到解决问题的方法。 这是这样的json回复,我想更改为[ NSDictionary ]:
let reply = "[{"qty":"3","price":"75000"},{"qty":"4","price":"75000"},
{"qty":"1","price":"60000"},{"qty":"2","price":"60000"},{"qty":"6","price":"80000"}]"
let array = [{"qty":"3","price":"75000"},{"qty":"4","price":"75000"},
{"qty":"1","price":"60000"},{"qty":"2","price":"60000"},{"qty":"6","price":"80000"}]
有人可以帮我举例吗? 谢谢!
根据您的陈述:
i want to change to [NSDictionary]
我认为它是:
Array<Dictionary<String, Any>> // using Swift v3
尽管还有一个更方便的解决方案是使用SwiftyJSON库,但是非第三方的解决方案可能是:
let reply = "[{\"qty\":\"3\",\"price\":\"75000\"},{\"qty\":\"4\",\"price\":\"75000\"},{\"qty\":\"1\",\"price\":\"60000\"},{\"qty\":\"2\",\"price\":\"60000\"},{\"qty\":\"6\",\"price\":\"80000\"}]"
do {
let data = try JSONSerialization.jsonObject(with: reply.data(using: .utf8)!, options: .allowFragments) as? Array<Dictionary<String, Any>>
let firstElement: Dictionary<String, Any> = data!.first!
print("First dictionary element: \(firstElement)")
print("Quantity from first dictionary element: \(firstElement["qty"] as! String)")
}
catch{
print ("Handle error")
}
输出:
First dictionary element: ["qty": 3, "price": 75000]
Quantity from first dictionary element: 3
注意:
我没有处理nil检查,而且我将字符串转换回数据以获取json对象,如果您已经有数据,则无需调用reply.data(using: .utf8)!
而是传递您的数据。
根据以上评论:
您还可以等同于:
Array<Dictionary<String, Any>> = [[String: Any]]
Dictionary<String, Any> = [String: Any]
尝试这个:
let jsonText = "[{\"qty\":\"3\",\"price\":\"75000\"},{\"qty\":\"4\",\"price\":\"75000\"},{\"qty\":\"1\",\"price\":\"60000\"},{\"qty\":\"2\",\"price\":\"60000\"},{\"qty\":\"6\",\"price\":\"80000\"}]"
var myData:NSArray?
if let data = jsonText.data(using: String.Encoding.utf8) {
do {
myData = try JSONSerialization.jsonObject(with: data, options: []) as? NSArray
if let resultdata = myData
{
print(resultdata)
}
} catch let error as NSError {
print(error)
}
}
答复已经是字典的数组。 你到底在问什么 如果您需要将JSON回复的字符串表示形式转换为可管理的结构,则正如@Imad所建议的,您应该使用许多可用的JSON库之一,而SwiftyJSON是最好的库之一。
收到答复后,您需要做的就是这样
let json = JSON(data: dataFromNetworking)
另外,如果要包含代码,请确保它是真实的代码-显示的内容将生成错误,但不会。
let reply = [["qty":"3","price":"75000"],
["qty":"4","price":"75000"],
["qty":"1","price":"60000"],
["qty":"2","price":"60000"],
["qty":"6","price":"80000"]]
var json_Parameters = NSArray()
let reply = "[{\"qty\":\"3\",\"price\":\"75000\"},{\"qty\":\"4\",\"price\":\"75000\"},{\"qty\":\"1\",\"price\":\"60000\"},{\"qty\":\"2\",\"price\":\"60000\"},{\"qty\":\"6\",\"price\":\"80000\"}]"
将Json字符串转换为json数据,并使用以下代码将Caste键入为Array()
if let data = reply.data(using: String.Encoding.utf8) {
do {
let datwa = try JSONSerialization.jsonObject(with: data, options: []) as! NSArray
json_Parameters = datwa
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.