gpt4 book ai didi

iphone - 第二次调用时,iOS JSON 解析返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:00 25 4
gpt4 key购买 nike

嗨,我是 obj-c 的新手。

我在 json 上得到了一些奇怪的结果。我有一个由 NSThread 调用的 json 函数,当我第一次运行我的 json 函数时,它显示了一个结果,但是当该函数第二次调用时,它返回 null。

这是我的 json 函数:

- (void) updatePaxWithBook:(Book*)_book{

NSString* bookCode = _book.bookCode;

NSString* url = [NSString stringWithFormat:@"%@/?book_code=%@", URL_UPDATE_PAX,bookCode];
url = [url stringByReplacingOccurrencesOfString:@" " withString:@"%20"];

JSONDecoder* jDecoder = [[JSONDecoder alloc] init];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
jObject = [jDecoder objectWithData:response];

NSString* errCode =@"";
if ([[jObject objectForKey:@"err_code"] isKindOfClass:[NSNumber class]]) {
errCode = [[jObject objectForKey:@"err_code"] stringValue];
} else {
errCode = [jObject objectForKey:@"err_code"];
}

NSLog(@"OUT >> %@",jObject);
NSLog(@"OUT >> %@",errCode);
}

所以当我运行我的第一个 json 时,这是响应:

{ "err_code": 0, "book_code": "1XX1AS", "pax_num": [1,0,0], "pax_name": ["USER NAME"] }

NSLog 显示一些结果:

OUT >> {
"book_code" = 1XX1AS;
"err_code" = 0;
"pax_name" = (
USER NAME
);
"pax_num" = (
1,
0,
0
);}
OUT >> 0

但是当函数第二次调用时,响应如下:

{ "err_code": 001002, "err_msg": "Validation error: there are no changes on original data." }

和 NSLog 显示一些 null

OUT >> (null)
OUT >> (null)

我的代码有什么问题,我该怎么办?

最佳答案

通过 http://jsonlint.com 运行您的第二个 JSON你会发现它不喜欢第二个例子中数字的前导零。

我通过 NSJSONSerialization 运行您的第二个示例来确认这一点(这给了我一个 NSError 对象):

NSError *error = nil;
jObject = [NSJSONSerialization JSONObjectWithData:response options:0 error:&error];

if (error)
NSLog(@"JSON error: %@", error);
else
NSLog(@"JSON result: %@", jObject);

生成的 NSError 对象包含以下错误消息:

Number with leading zero around character 15.

您是如何生成该 JSON 的?您是编写自己的 JSON 字符串,还是使用标准的 JSON 函数调用?

该数字错误代码不应该有前导零,或者应该用引号引起来。无论生成 JSON 错误响应的是什么,都没有正确编码 JSON。

关于iphone - 第二次调用时,iOS JSON 解析返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16569485/

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