错误:json 字符串不是以 icloud 的数组或对象开头

Posted

技术标签:

【中文标题】错误:json 字符串不是以 icloud 的数组或对象开头【英文标题】:Error : json string did not start with array or object for icloud 【发布时间】:2014-02-13 09:08:19 【问题描述】:

我是第一次使用 iCloud。我成功地将数据上传到 iCloud 数据库。

我编写了以下代码来检索数据:

[[iCloud sharedCloud] retrieveCloudDocumentWithName:
          @"SessionInfo.plist" completion:
          ^(UIDocument *cloudDocument, NSData *documentData, NSError *error) 

  NSError *error;
  id dict = [NSJSONSerialization
  JSONObjectWithData:documentData options:NSJSONReadingMutableLeaves error:&error];

这里的 dict 是 nil。错误消息是“json string did not start with array or object for iCloud”。

【问题讨论】:

This question 非常相似——您是从您的帐户和 user3305252 的帐户发帖吗?如果是这种情况,请将您的问题合并到一个并删除另一个。 【参考方案1】:

这不是错误消息,因为这不是NSJSONSerialization 可以返回的错误。错误消息很可能类似于 The data couldn’t be read because it isn’t in the correct formatJSON text did not start with array or object and option to allow fragments not set. 如果您希望人们知道您在说什么,请在提问时包含确切错误消息。

假设错误与我认为的匹配,答案很简单:您的 documentData 对象不包含有效的 JSON。结果NSJSONSerialization 无法将其转换为字典。该方法的第一个参数必须包含编码为 NSData 对象的有效 JSON 数据。

无法确定这是为什么,因为您没有描述您正在使用的数据。但是,由于您使用的文件名是 SessionInfo.plist,因此您可能正在使用属性列表。 属性列表不是 JSON。有效的属性列表文件格式包括 XML、二进制(未记录的格式)和 ASCII(已过时但仍然可读)。这些都不是 JSON,也不能与 NSJSONSerialization 一起使用。

【讨论】:

以上是关于错误:json 字符串不是以 icloud 的数组或对象开头的主要内容,如果未能解决你的问题,请参考以下文章

iOS App 接收格式正确的 JSON 但仍返回不是以数组或对象开头

json 和 数组的区别

JSON 文本没有以数组开头 AFNetworking 错误

JSON 文本不是以数组或对象开头

Index.js 文件连续给出“JSON 文本不是以数组开头”,尽管被格式化为数组

使用 Swift 3 上传和图像到 Parse Server 失败:“JSON 文本不是以数组或对象开头”