gpt4 book ai didi

iOS、JSON-RPC 和 NSJSONSerialization : Dealing with null values

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:23 28 4
gpt4 key购买 nike

我正在使用 JSON-RPC 在 iOS 应用程序和服务器之间进行通信。服务器的一些返回值是可选的。

考虑到我正在使用的技术组合,返回这些空值(例如 {"telephone": null})还是完全省略响应中的“电话”元素更好?

进一步解释我的问题:

看起来 JSON-RPC 规范没有指定与方法结果有多大关系(如果我错了请纠正我)并且显然不发送负载空元素会提高性能并稍微减少带宽。不过,我最感兴趣的是从 iOS NSJSONSerialization 角度来看的最佳方法。检查 NSDictionary 中是否存在键或现有键是否具有空值是否更容易/更好?

最佳答案

我使用的是一种完全不同的技术,可以肯定的是有点非正统,因为我的代码正在处理巨大的数据集,我真的很讨厌必须对每个值进行 NSNull 测试。我所做的是NSNull的子类,所以在处理数据时,我可以测试它的数值是否为0,它的字符串长度是否为0等。

@implementation NSNull (JSON)

- (NSUInteger)length { return 0; }

- (NSInteger)integerValue { return 0; };

- (CGFloat)floatValue { return 0; };

- (NSString *)description { return @"0(null)"; } // so I know it was NSNull in log messages

- (NSArray *)componentsSeparatedByString:(NSString *)separator { return @[]; }

- (id)objectForKey:(id)key { return nil; }

- (BOOL)boolValue { return NO; }

@end

编辑:我在电子商务运输应用程序中使用了完全相同的代码。数十个不同的 API 返回了数以千计的对象 - 必须查看每个项目以查看它是否为 [NSNull null] 将是一场噩梦。我尝试编写一个例程来修饰结果,它会递归地查看字典和数组并重建对象,但它变得太复杂了。

无论如何,我从来没有对这个解决方案有任何问题。显然是 YMMV。

关于iOS、JSON-RPC 和 NSJSONSerialization : Dealing with null values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034967/

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