在Objective C中创建JSON数组

时间:2013-11-18 08:14:13

标签: ios json nsarray nsurlconnection arrays

我需要帮助使用Objective C创建一个JSON数组。我以前从未这样做过,但我想要做的是创建一个JSON数组,然后创建一个JSON对,用于在我的NSURLConnection Post体中发回。

I know how to make and send the post body.

NSData *data = // some stuff in here...

        [request setHTTPMethod:@"POST"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setValue:[NSString stringWithFormat:@"%d", [data length]] forHTTPHeaderField:@"Content-Length"];
        [request setHTTPBody:data];

我的问题是我如何首先创建JSON数组,然后如何创建JSON对 任何帮助将不胜感激:))

2 个答案:

答案 0 :(得分:2)

使用Apple的NSJSONSerialization

    NSArray *array = @[@"1",@"2",@"3"];
    NSData *json = [NSJSONSerialization dataWithJSONObject:array options:0 error:nil];

    //back
    array = [NSJSONSerialization JSONObjectWithData:json options:0 error:nil];

答案 1 :(得分:0)

JSON基本上是转换为NSData的NSDictionary。我建议只使用AFNetworking框架,它将NSDictionary作为参数并自动将其转换为JSON。

但如果您想自己进行转换,可以使用苹果NSJSONSerialization:

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:requestParam
                                                   options:NSJSONWritingPrettyPrinted
                                                     error:&error];

如果你想发送一个数组,你可以这样做:

NSArray *requestArray = @[@"1",@"2"];
NSDictionary *requestDictionary = @{@"Array": requestArray};

这将创建以下结构:

Array =     (
    1,
    2
);

如果您想稍后修改requestDictionary(例如:添加额外的键和对象),您只需将其变为可变并使用它与使用NSMutableDictionaries一样。