怎么把这个数组转成json(iOS)

Posted

技术标签:

【中文标题】怎么把这个数组转成json(iOS)【英文标题】:how to convert this array to json (iOS) 【发布时间】:2014-02-21 04:03:24 【问题描述】:

这是一个数组:

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

我需要将这个带有嵌套NSArrayNSDictionary转换成这样的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),请帮帮我,谢谢。

【问题讨论】:

What have you tried so far? 他是认真地加入社区的。如果您要对他/她投反对票,请让他们知道原因,以便他们更好地做出贡献。 【参考方案1】:

我认为你应该先将数组转换为 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];

它会生成你想要的。

【讨论】:

【参考方案2】:

将输入数组转换为字典格式的代码:

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。 希望这段代码对你有帮助

【讨论】:

【参考方案3】:

NSError *错误; NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject://传递你的数组选项:NSJSONWritingPrettyPrinted error:&error]; NSString *jsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];

【讨论】:

以上是关于怎么把这个数组转成json(iOS)的主要内容,如果未能解决你的问题,请参考以下文章

怎么把json字符串转成数组对象

JAVA中怎么把String 类型的二维数组转成JSON串

laravel怎么把对象转换为数组

c#一个程序把xml文件转化成json对象,怎么从这个程序中获取json对象的值

怎么用 C/C++ 把结构体数组转成 JSON串

如何把JS对象转成数组