【问题标题】:Error Domain=NSCocoaErrorDomain Code=3840 in iOS swift?iOS swift 中的错误域 = NSCocoaErrorDomain 代码 = 3840?
【发布时间】:2016-02-26 13:30:48
【问题描述】:

之前一切正常,但现在出现类似

的错误

错误域=NSCocoaErrorDomain 代码=3840“JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。” UserInfo={NSDebugDescription=JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。}

我的 JSON 解析代码是这样的

 func JSONParseArray(jsonString: String) -> [AnyObject] {
            if let data = jsonString.dataUsingEncoding(NSUTF8StringEncoding) {
                if let array = (try? NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0)))  as? [AnyObject] {
                    return array
                }
            }
            print(strings)
            return [AnyObject]()
        }

可能有什么问题?还是我做错了什么?

我的 JSOn 字符串值为

http://test.domain.in/transfer/jsp/wsCall.jsp?dataFormat=JSON&requestData={"requestId":"1447417335364","re​​questType":"LOGIN","channelId":"MOBILE","clientId":"RG","groupId":"Test","loginId" :"test@test.com","password":"cFzc3dvcmRAMA==","noofAttempts":"1","ipAddress":"8ADCD445-A4F6-49EA-A344-35313A0AD","key":"MzQM3OTA4NDgxMjY4bWlsbGVy" }

【问题讨论】:

  • jsonString 的值是多少?
  • @Midhun 我更新了我的问题
  • 您的 jsonstring 无效。这部分http://test.domain.in/transfer/jsp/wsCall.jsp?dataFormat=JSON&requestData= 导致问题。
  • @Midhun 我的字符串有什么问题?可以请解释一下,以便我可以处理它..因为它之前工作正常
  • http://test.domain.in/transfer/jsp/wsCall.jsp?dataFormat=JSON&requestData= 不应成为您的 jsonString 的一部分。你必须弄清楚它为什么会来。

标签: ios json swift


【解决方案1】:
request.setValue("text/json", forKey: "Content-Type")

【讨论】:

    【解决方案2】:

    好像你回复的第一个字母是h,第二个是t,第三个是t,第四个是p。那不是有效的 JSON。

    顺便说一句。永远不要将字符串传递给应该解析 JSON 的方法。沿线有人向您发送了 NSData。将 NSData 原封不动地传递给 JSON 解析器。这样可以避免浪费内存、浪费时间、浪费电池电量和出现不必要的错误。

    顺便说一句。对于一个可能失败的方法,返回除可选项之外的任何内容都是非常糟糕的风格。特别是因为您实际上在发生错误时返回了一个空数组,这无法与 [] 的输入区分开来,后者被正确解析并返回一个空错误。所以你失去了所有的错误检查。

    【讨论】:

      猜你喜欢
      • 2017-06-16
      • 2018-04-08
      • 2015-03-11
      • 2020-03-14
      • 1970-01-01
      • 2016-07-10
      • 2021-11-18
      • 2017-05-07
      • 1970-01-01
      相关资源
      最近更新 更多