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

Posted

技术标签:

【中文标题】JSON 文本不是以数组或对象开头【英文标题】:JSON text did not start with array or object 【发布时间】:2018-02-28 06:42:54 【问题描述】:

使用 ios 应用程序管理 Parse-Server (/Heroku) 上的数据。 尝试保存数据时遇到以下问题。

这是发生问题的函数的代码:

func saveDataBlockOnline(_ dico: [String:String]) 
    let psvClassName = "Goodies",
    dataUnit=PFObject(className: psvClassName,
                      dictionary: dico)
    dataUnit.saveInBackground 
        (succeeded:Bool, error:Error?) in
        if succeeded 
            // Do something useful.
         else print("\(#function) Error:\(error ?? "" as! Error)")
    

这是我得到的错误:

saveDataBlockOnline Error:Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo=NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.

我想我得到了一些我没有正确使用的 JSON 答案。那么我应该如何修改代码呢?

关于这个主题还有其他帖子,但我没有找到真正的解决方案。

更多细节可能有用:

服务器本身的数据保存工作正常。但是当我添加一些云代码(即 Parse.Cloud.beforeSave 以更好地控制事情的发生方式)时,事情开始出错了。

【问题讨论】:

提供saveInBackground的代码 saveInBackground 不是我的代码。它是解析的一部分。如果我不使用云代码,它就可以工作,所以 saveInBackground 不是问题。 给我们展示一个dico的例子。仅从您显示的代码来看,这是唯一的罪魁祸首。 这里是一个例子:dico = ["sentence": "1969/07/20", "orderKey": "151980480109587", "explanation": "Neil Armstrong USA."] 【参考方案1】:

根据错误消息,您要解析的数据格式不正确。检查您的字典和 Object(dataUnit) 格式

【讨论】:

你的意思是dico变量? dataUnit 仅由 PFObject 生成。 是的 dico 变量 这里是一个例子:dico = ["sentence": "1969/07/20", "orderKey": "151980480109587", "explanation": "Neil Armstrong USA."] 能否分享一下这个方法的调试控制台(po dico) 什么是“po dico”?我在输入函数时做了: print("dico = (dico)") 以获取在我之前的命令中发布的结果。

以上是关于JSON 文本不是以数组或对象开头的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

解析:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

NSDebugDescription = "JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。";