我需要以NSArray
数组格式向服务器发送JSON
。如何将其转换为JSON
。这是我必须传递的NSArray
样本。
array([0] => array('latitude'=>'10.010490',
'longitude'=>'76.360779',
'altitude'=>'30.833334',
'timestamp'=>'11:17:23',
'speed'=>'0.00',
'distance'=>'0.00');
[1] => array('latitude'=>'10.010688',
'longitude'=>'76.361378',
'altitude'=>'28.546305',
'timestamp'=>'11:19:26',
'speed'=>'1.614',
'distance'=>'198.525711')
)`
,所需格式如下
[
{ "latitude":"10.010490",
"longitude":"76.360779",
"altitude":"30.833334",
"timestamp":"11:17:23",
"speed":"0.00",
"distance":"0.00"
},
{
"latitude":"10.010688",
"longitude":"76.361378",
"altitude":"28.546305",
"timestamp":"11:19:26",
"speed":"1.614",
"distance":"198.525711"
}
]
有人有解决方案吗?提前谢谢。
答案 0 :(得分:50)
NSDictionary *firstJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"10.010490", @"latitude",
@"76.360779", @"longitude",
@"30.833334", @"altitude",
@"11:17:23", @"timestamp",
@"0.00", @"speed",
@"0.00", @"distance",
nil];
NSDictionary *secondJsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"10.010490", @"latitude",
@"76.360779", @"longitude",
@"30.833334", @"altitude",
@"11:17:23", @"timestamp",
@"0.00", @"speed",
@"0.00", @"distance",
nil];
NSMutableArray * arr = [[NSMutableArray alloc] init];
[arr addObject:firstJsonDictionary];
[arr addObject:secondJsonDictionary];
NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject:arr options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];
NSLog(@"jsonData as string:\n%@", jsonString);
答案 1 :(得分:5)
最简单,最好的方法!!!
要将NSArray或NSMutableArray转换为jsonString,您可以先将其转换为NSData,然后再将其转换为NSString。使用此代码
NSData* data = [ NSJSONSerialization dataWithJSONObject:yourArray options:NSJSONWritingPrettyPrinted error:nil ];
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
它帮助了我,并希望它也能帮到你。祝一切顺利。
答案 2 :(得分:4)
我会推荐SBJson-Framework。
转换NSMutableArray
就像NSString *jsonString = [yourArray JSONRepresentation];
编辑:Jack Farnandish是对的,你必须将它转换为NSDictionary才能将它转换为Json。在我的例子中,NSMutableArray必须包含Dictionary。仅需要在字符串的开头和结尾处创建方括号。
答案 3 :(得分:2)
您可以使用iOS的build in JSON functions或使用外部资料库,例如JSONKit将您的数据转换为JSON
答案 4 :(得分:2)
首先您必须将结构更改为包含NSDictionary
个对象的NSArray
类和NSDictionary
,然后尝试在iOS 5序列化中使用JSONKit,而不是标准NSJSONSerialization
。
答案 5 :(得分:2)
#import <JSONKit/JSON.h>
NSArray *array = // Your array here.
NSString *json = [array JSONString];
NSLog(@"%@", json);
答案 6 :(得分:2)
检查this教程,明确解释了iOS 5.0中的JSON(序列化,反序列化)。
答案 7 :(得分:1)
您正在调用RESTful服务吗?
如果是这样,我强烈建议使用RestKit。它确实对象序列化/反序列化。它还处理所有网络基础。非常有价值,维护良好。