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

2022-08-30 17:54:57

我正在使用请求服务器并解析返回的JSON响应,但在解析时,我得到了这个错误:AFJSONRequestOperation

NSDebugDescription = "JSON text did not start with array or object and option to allow fragments not set.";

我检查了API,它返回了JSON数据:

header('Content-type: text/json');
$arr[] = array("Message" => "update succeeded");
echo '{"Result":'.json_encode($arr).'}';

任何想法如何解决这个问题?

编辑

我尝试从浏览器调用API并将请求包含在URL中,因此我得到了有效的JSON响应:

{"Result":[{"Message":"update succeeded"}]}

答案 1

首先,整个物体而不是碎裂成碎片。json_encode

其次,除非$arr包含多个元素(从上面的例子中不清楚),否则它应该初始化为:

$arr = array("Message" => "update succeeded");

我仍然不确定这里可能还有什么问题。您应该回显您的应用程序正在接收的内容,这应该表明问题。


答案 2

请使用可接受的内容类型。在 Web 服务中,这应该只是纯文本。

这是我的快速代码和修复:

    let manager = AFHTTPRequestOperationManager()

    manager.requestSerializer=AFJSONRequestSerializer()
    manager.responseSerializer = AFHTTPResponseSerializer();

    manager.GET(

        baseURL + (webServiceType as String) + secureParam,
        parameters:[:],

        success:
        { (operation: AFHTTPRequestOperation!,
            responseObject: AnyObject!) in
            completion(obj: responseObject)
        },
        failure:
        { (operation: AFHTTPRequestOperation!,
            error: NSError!) in
            completion(obj: nil)
    })

推荐