【问题标题】:Error parsing JSON error 3840解析 JSON 错误 3840 时出错
【发布时间】:2014-07-26 12:03:54
【问题描述】:

我有一个返回 VALID JSON 数组的 Web 服务,但在我的代码中出现以下错误。

"Error Domain=NSCocoaErrorDomain Code=3840 "无法进行操作 完全的。 (Cocoa 错误 3840。)”(JSON 文本不是以数组开头或 允许未设置片段的对象和选项。) UserInfo=0x9b9af50 {NSDebugDescription=JSON 文本不是以数组或对象开头并且 允许未设置片段的选项。}"

我知道这个错误是由于 json 中的错误。但我已经检查并验证了他们认为有效的各种来源的回复。

这是我的 JSON 的 Objective-C 代码

NSDictionary *dictionary = [NSDictionary dictionaryWithJSONData:jsonData];

我也用这段代码来获取字典

NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];

但是当我调试并检查字典变量时,它显示“nil”

这是我的 json 响应

[  
   {  
      "id":"182",
      "name":"2 Tone Brown",
      "price":"2099.0000",
      "description":"",
      "image":"http:\/\/www.nnn.com\/images\/2 Tone BG.jpg",
      "images":[  
         {  
            "1":"2 Tone BG 1.jpg"
         },
         {  
            "2":"2 Tone BG 2.jpg"
         },
         {  
            "3":"2 Tone BG 3.jpg"
         },
         {  
            "4":"2 Tone BG 4.jpg"
         },
         {  
            "5":"2 Tone BG 5.jpg"
         }
      ],
      "sizes":[  
         {  
            "id":"16",
            "size":"L",
            "price":"0.0000"
         },
         {  
            "id":"17",
            "size":"XL",
            "price":"200.0000"
         },
         {  
            "id":"15",
            "size":"M",
            "price":"0.0000"
         },
         {  
            "id":"14",
            "size":"S",
            "price":"0.0000"
         },
         {  
            "id":"23",
            "size":"Custom Size",
            "price":"100.0000"
         },
         {  
            "id":"42",
            "size":"Please Select",
            "price":"0.0000"
         }
      ]
   },
   {  
      "id":"293",
      "name":"3 Seam Collar Black",
      "price":"2499.0000",
      "description":"Exclusive  3 Collar <br> <br> This beautiful but simple color combination gives you a great look. <br> <br> Colors: Red\/Black, Green\/Blue Check, Sky Blue",
      "image":"http:\/\/www.nnn.com\/images\/3 Seam Collar Black Main.jpg",
      "images":[  
         {  
            "1":"3 Seam Collar Black 1.jpg"
         },
         {  
            "2":"3 Seam Collar Black 6.jpg"
         },
         {  
            "3":"3 Seam Collar Black 2.jpg"
         },
         {  
            "4":"3 Seam Collar Black 3.jpg"
         },
         {  
            "5":"3 Seam Collar Black 5.jpg"
         },
         {  
            "6":"3 Seam Collar Black 4.jpg"
         }
      ],
      "sizes":[  
         {  
            "id":"17",
            "size":"XL",
            "price":"200.0000"
         },
         {  
            "id":"16",
            "size":"L",
            "price":"0.0000"
         },
         {  
            "id":"15",
            "size":"M",
            "price":"0.0000"
         },
         {  
            "id":"14",
            "size":"S",
            "price":"0.0000"
         },
         {  
            "id":"23",
            "size":"Custom Size",
            "price":"100.0000"
         }
      ]
   }
]

上面的 JSON 在 java 中可以正常工作,但不会产生任何结果。

【问题讨论】:

  • 您发布的 JSON 无效。
  • 您的数据是 RTF 文件??
  • 我验证了来自 jsonlint.com 的 JSON,它说有效

  • 标签消失了,因为您没有正确格式化帖子。是的,它现在有效。
  • jsonData 的确切起始字符是什么?它可以包含byte order mark吗?

标签: ios objective-c json


【解决方案1】:

由于您的 JSON 被 [...] 包围,它将返回一个数组,而不是字典。

【讨论】:

  • 我使用相同的格式,但使用不同的网络服务。它可以正常工作,但会出现错误
  • @user3879669 这个服务返回一个不同的 JSON,不是吗?你说它可以正常工作的那个可能是返回一个字典,但你在问题中提到的那个返回一个数组。
  • 是的,以[ 开头的 JSON 是一个数组——一旦尝试实际引用“字典”,代码就会失败。 (当然,这与解析错误是分开的。)
【解决方案2】:

删除了

<br>

来自响应的标签。当我查看它时,字典在开始阅读时崩溃了

<br>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2020-01-26
    • 2013-02-21
    • 2017-07-15
    • 1970-01-01
    相关资源
    最近更新 更多