在swift中获取特定的JSON值

时间:2016-08-10 05:00:11

标签: ios swift

我有一个小应用程序,在其中一个按钮中,它从在线检索JSON文件并打印结果,但是我如何利用JSON结果,而不是必须打印以打印整个JSON,我想只打印其中一个值,例如JSON [“data”] [1]。

这是我的代码:

  @IBAction func approveuser(sender: AnyObject) {
        let postEndpoint: String = "https://example.com/example.json"
        let url = NSURL(string: postEndpoint)!
        let session = NSURLSession.sharedSession()
        let postParams : [String: AnyObject] = ["UUID": UIDevice.currentDevice().identifierForVendor!.UUIDString, "requested": place]
        let request = NSMutableURLRequest(URL: url)
        request.HTTPMethod = "POST" //can be changed.
        request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
        do {
            request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(postParams, options: NSJSONWritingOptions())
            print(postParams)
        } catch {
            print("bad things happened")
        }
        session.dataTaskWithRequest(request, completionHandler: { ( data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
            guard let realResponse = response as? NSHTTPURLResponse where
                realResponse.statusCode == 200 else {
                    print("Not a 200 response")
                    return
            }



            // Read the JSON
            if let postString = NSString(data:data!, encoding: NSUTF8StringEncoding) as? String {
                print("POST: " + postString)
                //
            }
        }).resume()

    }

2 个答案:

答案 0 :(得分:0)

通过其密钥检索JSON值。无论是数组还是仅仅是对象。 json可以包含多个其他json对象或json数组。您可以使用自己的自定义类来检索值。要实现这一点,您可以查看此code以了解 或者在iOS中,您可以使用SwiftyJSON来检索您的头脑风暴中的值。例如,使用SwiftyJSON,你可以做 -

{  {"user": {
      "name": "..."
       }
    },
    {"address": "..."
   }
}   

为此,您可以编码为:

    let json = JSON(data: dataFromNetworking)
if let userName = json[0]["user"]["name"].string {
  //Now you got your value
}  

where' dataFromNetworking'是您从网址读取的NSData,包含如上所述的json。

像这样,你可以从json中检索值。要了解有关SwiftyJSON的更多信息,请转到此link

答案 1 :(得分:0)

这里有一个从json中检索数据的例子:

json格式:

[
  {
    "person": {
      "name": "Rob",
      "age": "4"
    }
  },
  {
    "person": {
      "name": "joe",
      "age": "73"
    }
  }
]

相关代码:

var json: Array!    
do {
      json = try NSJSONSerialization.JSONObjectWithData(JSONData, options: NSJSONReadingOptions()) as? Array
    } catch {
      print(error)
    }

    if let item = json[0] as? [String: AnyObject] {
      if let person = item["person"] as? [String: AnyObject] {
        if let age = person["age"] as? Int {
          print("Rob's age is \(age)")
        }
      }
    }