gpt4 book ai didi

objective-c - iOS - CLLocationCoordinate2D/floats/long 到 JSON 的 NSDictionary 中?

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:58 26 4
gpt4 key购买 nike

我正在寻求将一个简单的 objectiveC 类(即使在那个时候它只是函数中的一些变量)转换为 JSON,以便它可以在服务器端发送并转化为 java 对象。

类可能有以下字段;

LatLng locationA // a simple POJO with either float or long to represent lat and long. 
LatLng locationA
float someFloat

在我尝试将所有内容打包到 NSDictonary 中的那一刻。传递 float 不起作用,所以我必须将它们转换为 NSString。所以在服务器端,它们将以字符串形式出现……这并不理想。

CLLocationCoordinate2D location = ... ;
float lat = location.latitude;
float lng = location.longitude;

float aFloat = 0.12434f;
NSString *aFloatstr = [NSString stringWithFormat:@"%f", aFloat];

NSString *latStr = [NSString stringWithFormat:@"%f", lat];
NSString *lngStr = [NSString stringWithFormat:@"%f", lng];

NSDictionary *locationDictionary =
[NSDictionary dictionaryWithObjectsAndKeys:
latStr , @"latitude",
lngStr, @"longitude",
nil];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
locationDictionary, @"locationA",
locationDictionary, @"locationB",
aFloatstr,@"aFloat",
nil];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];

NSString *str = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);

将 CLLocationCoordinate2D 放入 NSDictionary 的最佳方法是什么?

如何将基本类型、长 float 等添加到 NSDictionary?

最佳答案

与其将纬度和经度放入 NSString,不如使用 NSNumber。当 NSJSONSerialization 遇到 NSNumber 时,它不会像引用字符串那样引用该值(这正是您在传输数字时想要的,对吧?)。

对于纬度和经度,您还需要使用 double 而不是 float,因为这就是它们在内部的表示方式。无需放弃精度。

[NSNumber numberWithDouble:lat]
[NSNumber numberWithDouble:lng]
[NSNumber numberWithFloat:aFloat]

由于 NSNumber 的实例是对象,您可以将它们存储在 NSDictionary 中没问题。

关于objective-c - iOS - CLLocationCoordinate2D/floats/long 到 JSON 的 NSDictionary 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15714712/

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