这是一个数组:
2011-1-1
2011-1-2
2011-3-3
2012-1-4
2012-1-5
2012-6-7
2012-6-9
2013-1-3
2013-1-8
2013-9-1
2013-9-2
2014-3-7
2014-3-13
2014-4-1
2014-4-17
我需要将此NSDictionary
与嵌套NSArray
转换为json(使用objective-c):
{
"y2011m1": [
"2011-1-1",
"2011-1-2"
],
"y2011m3": [
"2011-3-3"
],
"y2012m1": [
"2012-1-4",
"2012-1-5"
],
"y2012m6": [
"2012-6-7",
"2012-6-9"
],
"y2013m1": [
"2013-1-3",
"2013-1-8"
],
"y2013m9": [
"2013-9-1",
"2013-6-2"
],
"y2014m3": [
"2014-3-7",
"2014-3-13"
],
"y2014m4": [
"2014-4-1",
"2014-4-17"
]
}
同年和同月成为“yxxxmx”,并由它组合,我不知道该怎么办(使用objective-c),请帮助我,谢谢。
答案 0 :(得分:3)
我认为你应该首先将数组转换为NSDictionary,然后使用NSJSONSerialization方法。
[NSJSONSerialization dataWithJSONObject: options: error:]
[NSJSONSerialization JSONObjectWithData: options: error:]
NSDictionary * toJson = @{@"y2001m1" : @[@"2011-1-1", @"2011-1-2"]};
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:toJson options:0 error:&error];
它会产生你想要的东西。
答案 1 :(得分:0)
将输入数组转换为字典格式的代码:
NSArray *datesArr = @[@"2011-1-1", @"2011-1-2", @"2011-3-3", @"2012-1-4", @"2012-1-5", @"2012-6-7", @"2012-6-9", @"2013-1-3", @"2013-1-8", @"2013-9-1", @"2013-9-2", @"2014-3-7", @"2014-3-13", @"2014-4-1", @"2014-4-17"];
for (NSString *date in datesArr) {
NSArray *subStrArr = [date componentsSeparatedByString:@"-"];
NSString *ymStr = [NSString stringWithFormat:@"y%@m%@", [subStrArr objectAtIndex:0], [subStrArr objectAtIndex:1]];
if ([jsonDict objectForKey:ymStr]) {
NSMutableArray *ymStrJsonArray = [jsonDict objectForKey:ymStr];
[ymStrJsonArray addObject:date];
[jsonDict setObject:ymStrJsonArray forKey:ymStr];
}
else {
NSMutableArray *ymStrJsonArray = [[NSMutableArray alloc] initWithArray:@[date]];
[jsonDict setObject:ymStrJsonArray forKey:ymStr];
}
}
NSLog(@"dict = %@", jsonDict);
然后你将jsonDict(NSDictionary)转换为json。 我希望这段代码可以帮助你
答案 2 :(得分:0)
NSError *错误; NSData * jsonData2 = [NSJSONSerialization dataWithJSONObject://在这里传递你的数组选项:NSJSONWritingPrettyPrinted error:& error]; NSString * jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];