繁体   English   中英

在Swift 3中将String数据从json更改为NSArray

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM