解析:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项
Posted
技术标签:
【中文标题】解析:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项【英文标题】:Parse : JSON text did not start with array or object and option to allow fragments not set 【发布时间】:2016-08-20 09:02:01 【问题描述】:我有一个使用 Parse 的系统,它有一个 Web 前端和一个 ios 和 android 客户端。 在我们迁移到 HTTPS
之前,一切正常在 Android 和 Web (javascript) 上仍然一切正常,但是当我尝试在 iOS
中上传文件时收到以下消息JSON 文本不以数组或对象开头,并且允许未设置片段的选项。
导致它的代码是。只有当我在上传中包含图片时它才会失败 (Search.sharedInstance.imageURL != nil)
// Send to Parse
if PFUser.currentUser() != nil
sentReport["user"] = Search.sharedInstance.currentUser
sentReport["reportType"] = userSelectedReportType
Search.sharedInstance.reportText = reportNotesTextView.text
sentReport["reportDescription"] = Search.sharedInstance.reportText
if (reportLatCoords != nil && reportLngCoords != nil)
sentReport["reportPosition"] = PFGeoPoint(latitude: reportLatCoords!, longitude: reportLngCoords!)
sentReport["search"] = Search.sharedInstance.selectedPerson
let reportImageFile = PFFile(name: "\(Search.sharedInstance.timeStamp).jpg", data: reportImage!)
if reportPhoto.image != UIImage(named: "selectPhoto")
if Search.sharedInstance.imageURL != nil
sentReport["reportPicture"] = reportImageFile
sentReport.setObject(Search.sharedInstance.imageURL!.absoluteString, forKey: "reportImageUri")
sentReport["loggedAt"] = date
// Handle success & failure
sentReport.saveInBackgroundWithBlock (success, error) -> Void in
if success == true
self.dismissViewControllerAnimated(true, completion: () -> Void in )
else
if Reachability.isConnectedToNetwork() == false
sentReport.pinInBackgroundWithBlock (success, error) -> Void in
if success
Search.sharedInstance.syncReportItemsWithServer()
self.displayAlert("No internet connection available", message: "But don't worry, your report will be sent automatically when you regain an internet connection.")
我正在苦苦挣扎的是,我经常阅读 /parse 解决了这个问题,但是我无法控制图像上传。在 Android SDK 中也能正常工作?
我的服务器地址是:https://lowlands.lab-cloud.net/parse
更新
报告图片
var reportImage = UIImageJPEGRepresentation(self.reportPhoto.image!,
1.0)
if reportImage!.length < 10000000
reportImage = UIImageJPEGRepresentation(self.reportPhoto.image!, 0.75)
else if (reportImage!.length >= 10000000) && (reportImage!.length <= 20000000)
reportImage = UIImageJPEGRepresentation(self.reportPhoto.image!, 0.50)
else if (reportImage!.length > 20000000)
reportImage = UIImageJPEGRepresentation(self.reportPhoto.image!, 0.25)
【问题讨论】:
【参考方案1】:问题出在您的 reportImage
变量上,很遗憾您没有与我们分享...这就是您将 UIImages 存储在 PFFIle 中的方式
let imageData = UIImagePNGRepresentation(image)
let imageFile = PFFile(name:"image.png", data:imageData)
var userPhoto = PFObject(className:"UserPhoto")
userPhoto["imageName"] = "My trip to Hawaii!"
userPhoto["imageFile"] = imageFile
userPhoto.saveInBackground()
【讨论】:
抱歉什么意思?这一直有效,直到我去 https 好的,所以它可能不会在图像存储中...当您在 Parse 配置中定义服务器时,您是否可以尝试添加斜杠或删除最后一个斜杠,以便它以 /parse 或 /parse 结尾/ 或尝试 /parse/1/ /1/ 不是原始解析托管服务吗?不过我会试试的 我可以登录并做一些事情,只是上传失败的图像以上是关于解析:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项的主要内容,如果未能解决你的问题,请参考以下文章
NSDebugDescription = "JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。";
(Cocoa 错误 3840。)”(JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。)
Alamofire 文件上传出现错误“JSON 文本未以数组或对象开头,并且允许未设置片段的选项”
错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”