繁体   English   中英

如何使用Alamofire swift 3从此JSON获取值

[英]How to get values from this JSON using Alamofire swift 3

我正在尝试从此JSON获取值。 这是JSON的一部分,因为实际的JSON数据太长。

"hits" : [ {
"recipe" : {
  "uri" : "http://www.edamam.com/ontologies/edamam.owl#recipe_bd8def1d09d8c308f659e6945f366271",
  "label" : "Pinchos de carne",
  "image" : "http://img.recetascomidas.com/recetas/640_480/pinchos-de-carne.jpg",
  "source" : "Recetal Comidas",
  "url" : "http://pinchos-de-carne.recetascomidas.com/",
  "shareAs" : "http://www.edamam.com/recipe/pinchos-de-carne-bd8def1d09d8c308f659e6945f366271/carne",
  "yield" : 6.0,
  "dietLabels" : [ "Low-Carb" ],
  "healthLabels" : [ "Dairy-Free", "Gluten-Free", "Egg-Free", "Peanut-Free", "Tree-Nut-Free", "Soy-Free", "Fish-Free", "Shellfish-Free" ],
  "cautions" : [ ],
  "ingredientLines" : [ "600 gr. de carne magra de cerdo", "2 cucharadas de pimentón dulce", "1 cucharada de pimentón picante", "1 cucharada de cúrcuma", "1 cucharada de sazonador especial para carnes", "3 cucharadas de perejil fresco bien picadito", "1/2 cucharada de comino", "Aceite de oliva", "3 patatas", "1 diente de ajo", "Pimienta negra", "Sal" ],
  "ingredients" : [ {
    "text" : "600 gr. de carne magra de cerdo",
    "quantity" : 600.0,
    "measure" : null,
    "food" : "carne magra cerdo",
    "weight" : 600.0
  }, {
    "text" : "2 cucharadas de pimentón dulce",
    "quantity" : 2.0,
    "measure" : "tbsp",
    "food" : "pimenton dulce",
    "weight" : 13.6
  }, {
    "text" : "1 cucharada de pimentón picante",
    "quantity" : 1.0,
    "measure" : "tbsp",
    "food" : "pimenton picante",
    "weight" : 6.8
  }, {
    "text" : "1 cucharada de cúrcuma",
    "quantity" : 1.0,
    "measure" : "tbsp",
    "food" : "curcuma",
    "weight" : 6.8
  }, {
    "text" : "1 cucharada de sazonador especial para carnes",
    "quantity" : 1.0,
    "measure" : "tbsp",
    "food" : "sazonador",
    "weight" : 2.7
  }, {
    "text" : "3 cucharadas de perejil fresco bien picadito",
    "quantity" : 3.0,
    "measure" : "tbsp",
    "food" : "perejil fresco",
    "weight" : 11.4
  }, {
    "text" : "1/2 cucharada de comino",
    "quantity" : 0.5,
    "measure" : "tbsp",
    "food" : "comino",
    "weight" : 3.0
  }, {
    "text" : "Aceite de oliva",
    "quantity" : 2.0,
    "measure" : "tbsp",
    "food" : "aceite oliva",
    "weight" : 27.0
  }, {
    "text" : "3 patatas",
    "quantity" : 3.0,
    "measure" : null,
    "food" : "patatas",
    "weight" : 195.0
  }, {
    "text" : "1 diente de ajo",
    "quantity" : 1.0,
    "measure" : null,
    "food" : "ajo",
    "weight" : 3.0
  }, {
    "text" : "Pimienta negra",
    "quantity" : 1.0,
    "measure" : "peppercorn",
    "food" : "pimienta negra",
    "weight" : 0.3
  }, {
    "text" : "Sal",
    "quantity" : 0.0,
    "measure" : null,
    "food" : "sal",
    "weight" : 3.3346887
  } ]

例如,我想获取“配方”中的标签值。 我已在控制台中成功打印了所有JSON,但不知道如何获取配方值。

我希望你能帮助我。

这是我现在拥有的代码。

let url: String = "https://test-es.edamam.com/search?q=pollo"
var arregloHits: NSMutableArray = []

override func viewDidLoad() {
    super.viewDidLoad()

    pruebaJson()
}

func pruebaJson(){
    if ControladorService.conexionInternet(){
        ControladorService.sharedInstance.callUrlWithCompletion(url: url, params: nil, completion: { (finished, response) in
            if finished{
                let result = NSMutableArray(array: response["hits"] as! NSArray)

                self.arregloHits = result
                print(self.arregloHits)
            }else{
                print("Connection failed")
            }
        }, method: .get)
    }else{
        print("No Internet")
    }
}

您的顶级json结构是一个字典。 因此,您需要将其解析为[String:Any]。 然后您的提示级别是一个JSON数组,因此您需要将其解析为[Any]

这是一个例子。 别忘了处理拆封

do{
    let json = try JSONSerialization.jsonObject(with: yourJSONData, options: []) as? [String: Any]

    let hits = json?["hits"] as? [Any]
    dump(hits)
}catch let error{

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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