gpt4 book ai didi

ios - NSJSONSerialization 和 SBJson 工作异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:50 25 4
gpt4 key购买 nike

我曾多次尝试使用 NSJSONSerialization 和 SBJsonWriter 将同一个 NSDictionary 对象转换为 NSData 和 NSString,但有时会得到不同的字符串。甚至为空。这很奇怪,我找不到任何理由。 =( JSONKit 和 YAJL 没有这样的问题。以下是我的测试代码。

for (int i = 0; i < 5; i++) {
NSDictionary *d = [NSDictionary dictionaryWithObject:@"value" forKey:@"key"];
NSData *data = [NSJSONSerialization dataWithJSONObject:d options:0 error:nil];
NSLog(@"%@", [NSString stringWithUTF8String:data.bytes]);
}

控制台输出是...

2012-04-25 01:35:33.113 Test[19347:c07] {"key":"value"}
2012-04-25 01:35:33.114 Test[19347:c07] (null)
2012-04-25 01:35:33.114 Test[19347:c07] {"key":"value"}
2012-04-25 01:35:33.114 Test[19347:c07] {"key":"value"}
2012-04-25 01:35:33.115 Test[19347:c07] (null)

每次运行测试代码时输出都会改变。数据的字节大小相同,但 UTF8 转换后的字符串长度不同。

最佳答案

NSData 对象中的字节不一定包含以 NUL 结尾的字符串。如果您想将数据转换为 NSString,请改为执行以下操作:

[[NSString alloc] initWithBytes:data.bytes length:data.length encoding:NSUTF8StringEncoding]

有些解析器可能会为了安全起见将“\0”写入它们返回的数据的末尾,这解释了为什么它们的行为更可预测。但正如您所见,您不应该依赖这种行为。

关于ios - NSJSONSerialization 和 SBJson 工作异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302184/

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