如何附加来自 JSON 的数据

Posted

技术标签:

【中文标题】如何附加来自 JSON 的数据【英文标题】:How to append the data from the JSON 【发布时间】:2018-06-29 09:39:37 【问题描述】:

如何追加数据?

我的 api 为:-

[
    
        "Name": "Vegetables",
        "PictureModel": 
            "ImageUrl": "http://example.jpeg"  
        
    ,
    
        "Name": "Fruits",
        "PictureModel": 
            "ImageUrl": "http://example1.jpeg"  
        
     
]

用于从 json 中获取数据

 let session = URLSession.shared
        session.dataTask(with: request)  (data, response, error) in
            if let response = response 
                print(response)
            

            if let data = data 
                do 
                    let json = try JSONSerialization.jsonObject(with: data, options: []) as! Array<[String:Any]>
                    print(json)


                    let type = json[0]
                    let name = type["Name"] as! String
                    let PictureModel = type["PictureModel"] as! [String:Any]
                    print(PictureModel)

                    let nameofimage = PictureModel["ImageUrl"]  as! String
                    print(nameofimage)

                    self.fetchedHome.append(Categories(name: name, images: nameofimage))
                    self.tableview.reloadData()


                 catch 
                    print(error)
                
            

            .resume()

我在 tableview 中获得了输出。在 tableview 中,我在 UIImageview 中获得了第一个数据作为名称蔬菜和图像。

。但是第二个数据不显示。那么如何附加?如何给for循环和追加

【问题讨论】:

【参考方案1】:

使用此代码,您将在 For 循环中一一获取对象:-

if let data = json as? NSArray 
    for data in data 
        if let data = data as? [String: AnyObject] 
            //Here you will get data
            print("Name", data["Name"])
        
    

【讨论】:

【参考方案2】:

您是否在 print(json) 中正确获取了 JSON?

如果是,那么您应该尝试循环“json”,如下所示:-

for (var keyAttr in json)  
    let dataRow = json[keyAttr]

在 dataRow 中,您可以获得“Name”和“PictureModel”。

我希望它应该可以工作。

一切顺利。

【讨论】:

【参考方案3】:
let session = URLSession.shared
    session.dataTask(with: request)  (data, response, error) in
        if let response = response 
            print(response)
        

        if let data = data 
            do 
                let json = try JSONSerialization.jsonObject(with: data, options: []) as! Array<[String:Any]>
                if let data = json as? [String:Any] 
                    for data in data 

                        let name = data["Name"] as! String
                        let PictureModel = data["PictureModel"] as! [String:Any]
                        print(PictureModel)

                        let nameofimage = PictureModel["ImageUrl"]  as! String
                        print(nameofimage)

                        self.fetchedHome.append(Categories(name: name, images: nameofimage))
                    
                
                self.tableview.reloadData()


             catch 
                print(error)
            
        

        .resume()

【讨论】:

请检查我已经更新了我的代码怎么办? @brucecraigb 你有没有在你的代码中实现任何答案 我得到了答案蔬菜但没有附加第二个数据,所以解决它?\ 这里显示错误 :-在代码中从 Array 到 NSArray 的条件转换:- if let data1 = json as? NSArray ......如何解决它

以上是关于如何附加来自 JSON 的数据的主要内容,如果未能解决你的问题,请参考以下文章

如果 JSON 数据包含未定义,则附加不同的变量

带有来自链接的属性的 JSON 附加响应

如何附加不是来自数据库的实体框架对象?

如何将下一级json数据附加到树视图结构中

如何在 v-model 中附加来自 API 请求的数据

如何将字典附加到熊猫数据框?