gpt4 book ai didi

ios - JSON 文本未以数组或对象开头,并且未设置允许片段的选项

转载 作者:技术小花猫 更新时间:2023-10-29 10:36:01 24 4
gpt4 key购买 nike

我正在从服务器发送此 json 响应以请求我的 IOS 7 应用程序。

{
"root": {
"success": "1",
"message": "Successfully retrieved data.",
"data": {
"records": [
{
"receipt_key": "xxxxxxxx",
"receipt_id": "xxxxxxxx",
"store_name": "xxxxxx",
"amount": "xxxx",
"date_purchase": "xxxxxxxx",
"is_processed": "x",
"created_on": "xxxxxxxx",
"modified_on": "xxxxxxxx",
"modified_on_millis": "xxxxxxxx",
"user_folder": "xxxxxxxx",
"category_id": "xxxxxxxx",
"is_deleted": "x",
"currency_id": "xxxxxxxx"
}
]
}
}
}

我使用以下代码将上述 json 解析为 NSDictionary 对象。

 NSMutableDictionary *json=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];

但是我在上面的代码中遇到了这个错误。

Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x8a8a700 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

最佳答案

我在使用来自 php 页面的提要时遇到了同样的错误。正如您所遇到的,生成的 json 字符串通过了视觉检查,但无法序列化。我怀疑提要某处有一个隐藏的字符,所以我将每个字符转换为它的 unicode 十进制等价物并检查结果:

NSString *feedStr = [[NSString alloc] initWithData:feedData encoding:NSUTF8StringEncoding];
for(int i=0; i<[feedStr length]; ++i)
{
unichar c = [feedStr characterAtIndex:i];
NSLog(@"decimal char %d", c);
}

我发现第一个字符之前和最后一个字符之后是字符#65279。经过快速谷歌搜索后,我找到了 What is this char? 65279 ,其中这被标识为 byte order mark .

在我的例子中,我能够通过打开并保存所有包含的 php 文件,使用文本编辑器从源头上解决这个问题,该文本编辑器提供了使用“不带 BOM 的 UTF-8 编码”编码的选项。有关 php 端的更多信息,请参阅 How to avoid echoing character 65279 in php?

关于ios - JSON 文本未以数组或对象开头,并且未设置允许片段的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21452385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com