【问题标题】:Create JSON array in Objective C [duplicate]在Objective C中创建JSON数组[重复]
【发布时间】:2013-11-18 08:14:13
【问题描述】:

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

我知道如何制作和发送帖子正文。

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 对?

【问题讨论】:

    标签: ios json nsarray nsurlconnection arrays


    【解决方案1】:

    使用苹果的 NSJSONSerialization

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

    【讨论】:

      【解决方案2】:

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

      但是如果你想自己做转换,你可以使用apples 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 一样使用它。

      【讨论】:

      • 你忘了对这些东西进行 JSON 编码。这根本不是 json
      • 嗯,在某种程度上你是对的。这不是 JSON,这是 AFNetworking 方法的参数,我忘记编码了,因为我习惯了 AFNetworking,它会自动进行编码。
      猜你喜欢
      • 2015-03-13
      • 1970-01-01
      • 2013-05-10
      • 1970-01-01
      • 2013-03-25
      • 2019-05-22
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      相关资源
      最近更新 更多