根据IOS OBJ C键创建一个包含有效位数/小数位数的JSON字符串



我需要将JSON数据从应用程序(IOS)上传到后端服务器。

目标是优化上传数据包的大小,该数据包被JSON编码为NSString。该字符串目前约为5MB,但主要包含精度超过必要精度的双打。

通过删除不必要的小数位数,数据包的大小可以减少约40-50%。这必须根据钥匙进行定制。

根据键的不同,创建具有不同有效位数或小数位数的JSON字符串的最佳方法是什么。

您可能需要做一些实验。假设您希望发送带有两个十进制数字的数据,比如3.14,而不是pi。你知道你必须把所有的数字都变成NSNumber。你可以通过写把x变成一个有两个小数的数字

double asDouble = 3.141592653;    
NSNumber* asNumber = @(round (asDouble * 100.0) / 100.0);

然而,您需要检查这是否始终有效;如果运气不好,这可能会向您的服务器发送3.140000000000000000000001。

很明显,你可以用1000.0等代替100.0。不要用0.01的乘积代替除法,因为这会增加舍入误差,也会增加获得大量小数位数的机会。

你可以检查一下如果你写会发生什么

NSNumber* asNumber = @((float) asDouble);

如果NSJSONSerialization足够聪明,它将发送更少的小数。

最新更新