使用swiftyjson从索引对象数组ios中检索json的标题

Posted

技术标签:

【中文标题】使用swiftyjson从索引对象数组ios中检索json的标题【英文标题】:Retrieval of title from json from indexed object array ios using swiftyjson 【发布时间】:2016-12-07 05:26:57 【问题描述】:

JSON

    
  "321" : 
    "title" : "xyz",
    "pageid" : 321,
    "ns" : 0
  ,
  "172" : 
    "pageimage" : "xyzc.jpg",
    "pageid" : 172,
    "title" : "xyzcc",
    "ns" : 0,
    "thumbnail" : 
      "width" : 100,
      "height" : 57,
      "source" : "https:\/\/upload.abcd.org\/wikipedia\/commons\/thumb\/d\/de\/xyz.jpg\/100px-xyz.jpg"
    
  ,
  "224" : 
    "pageimage" : "abc.jpg",
    "pageid" : 224,
    "title" : "dasf",
    "ns" : 0,
    "thumbnail" : 
      "width" : 98,
      "height" : 100,
      "source" : "http:\/\/example.org\/images\/thumb\/2\/26\/skfdb.jpg\/98px-586px-dasdfsa.jpg"
    
  ,
  "825" : 
    "title" : "efkjdsb",
    "pageid" : 825,
    "ns" : 0
  ,
  "229" : 
    "title" : "eafewg",
    "pageid" : 229,
    "ns" : 0
  

使用SwiftyJSON从JSONresponse检索后如何访问JSON文件中的“title”和“thumbnail”:“source”?

“321”、“172”可以改变和依赖。相同格式的数组中有多个对象。

有些对象有缩略图对象,有些则没有。

如何将titlethumbnail->source 提取到带有图像和标签的TableView 以创建列表。

(使用Swift 语言) 我正在使用 AFNetworking 检索 json

let manager = AFHTTPSessionManager()
        manager.GET(url, parameters: nil, success: (operation, responseObject) -> Void in

            let responsejson = JSON(responseObject!)


            print("\n \n \n \n \n \n  Retrieved = \n\(responsejson)")

            let items = responsejson.count
            print("Items : \(items)")

提前致谢。

【问题讨论】:

向我们展示您的尝试。 我面临的问题是由于每个对象数组的索引都带有数字。因此我无法获取它们。 我没有要显示的代码。因为我是 ios 中这种 json 格式的新手 @NiravD 如果你熟悉,可以帮我解决这个问题 为此,您至少需要展示如何获得此 JSON 响应。 【参考方案1】:

您可以使用这样的代码来获取每个值:

for (key,obj) in responsejson 
    print(obj["title"])
    print(obj["thumbnail"]["source"])


【讨论】:

注意keyIWant是一个字符串 键示例? 你喜欢在这里输入什么作为键字符串? 密钥是“224”或“321”之类的数字之一 我可以通过添加 print(obj["thumbnail"]["source"]) 来检索它【参考方案2】:

尝试通过您枚举JSON 响应并检查titlethumbnail 是否可用。

for (key,item) in responsejson  
    if let title :String = item["title"].stringValue
        print(title)
        if let thumbnail : String = item["thumbnail"]["source"].stringValue
            print(thumbnail)
        
    

编辑:

您也可以使用 Swift 原生 Dictionary

for (key,item) in responsejson.dictionaryValue 
    if let title = item["title"] as? String 
         print(title)
         if let thumbnailDic = item["thumbnail"] as? [String: AnyObject] 
            print(thumbnail)
         
    

【讨论】:

如果条件为假。没有进入循环内 @AthulL.S 我已经告诉过你,它会为你提供同时具有标题和缩略图的对象。 如果让 title = item["title"] as? String print(title) // 打印(缩略图) 我的意思是它没有打印标题 如果条件不成立进入其循环

以上是关于使用swiftyjson从索引对象数组ios中检索json的标题的主要内容,如果未能解决你的问题,请参考以下文章

无法在 iOS 中使用 SwiftyJson 将 JSON 数组或 JSON 对象分配给 JSON

Swift - 使用 swiftyJSON 根据字典中的值查找字典数组的索引

SwiftyJson 从字典中的数组中获取值

如何从 SwiftyJSON 对象数组中搜索?

SwiftyJSON 数组为空

iOS:从 Alamofire 解析的 SwiftyJSON 是一个数组。尝试解析时为空