我的 JSON 解析失败

Posted

技术标签:

【中文标题】我的 JSON 解析失败【英文标题】:My JSON parsing fails 【发布时间】:2017-12-29 20:21:38 【问题描述】:

我正在使用 SwiftyJSON、Alamofire_SwiftyJSON 和 Alamofire 库。我正在尝试解析我的响应,但它什么也没返回(“定义”无法打印)。 JSON 不是空的,它已经得到了响应。

所以,我的代码如下所示(没有失败,全部编译)

 Alamofire.request(request).responseSwiftyJSON  dataResponse in

                if let JSON = dataResponse.result.value  
                    print(JSON)

                if let definitions = JSON["results"]["lexicalEntries"]["entries"]["senses"]["definitions"].string 
                    print(definitions)
                    print("Hello")
                    
            

我的响应模型看起来像(这不是整个响应,这正是我想要达到的:


  "results" : [
    
      "language" : "en",
      "id" : "ace",
      "type" : "headword",
      "lexicalEntries" : [
        
          "language" : "en",
          "entries" : [
            
              "etymologies" : [
                "Middle English (denoting the ‘one’ on dice): via Old French from Latin as ‘unity, a unit’"
              ],
              "grammaticalFeatures" : [
                
                  "type" : "Number",
                  "text" : "Singular"
                
              ],
              "homographNumber" : "000",
              "senses" : [
                
                  "definitions" : [
                    "a playing card with a single spot on it, ranked as the highest card in its suit in most card games"

我认为我的问题在于,我应该添加任何括号或任何符号吗?

if let definitions = JSON["results"]["lexicalEntries"]["entries"]["senses"]["definitions"].string

【问题讨论】:

这里有几个问题试图错误地访问您的 JSON 解析对象。首先从不正确访问数组项开始。例如这里JSON["results"]["lexicalEntries"],值JSON["results"] 是一个数组,所以这不是一个有效的访问。这种情况在您的陈述中发生的次数也更多。 @SpencerWieczorek 你能给我一个正确的步骤,让我的回复更深入吗? 试试:JSON["results"][0]["lexicalEntries"][0] 等等。只需确保您正在根据响应的结构进行访问。由于某种原因,几乎每个对象都不必要地包装成一个数组。 是的,它有效,谢谢 【参考方案1】:

您没有在 JSON 响应中索引相应的数组,要访问 definitions 数组,您可以简单地使用

JSON['results'][0]['lexicalEntries'][0]['entries'][0]['senses'][0]['definitions']

【讨论】:

以上是关于我的 JSON 解析失败的主要内容,如果未能解决你的问题,请参考以下文章

jQuery AJAX 登录问题(JSON 解析失败)

json地图样式解析在android中失败

NodeJS 异步 JSON 解析导致 Buffer.toString() 失败

Swift 3.0 中的 JSON 解析失败

Azure 逻辑应用 - 解析 JSON 架构失败“对象中缺少必需的属性”

json解析失败怎么解决?