从 IOS 中的 2 个数组创建 JSON

Posted

技术标签:

【中文标题】从 IOS 中的 2 个数组创建 JSON【英文标题】:create JSON from 2 arrays in IOS 【发布时间】:2015-03-22 21:31:26 【问题描述】:

我正在尝试创建字典以将 JSON 数据发布到服务器:

NSArray *keys = [NSArray arrayWithObjects:@"lat", @"lon", nil];
NSArray *values = [NSArray arrayWithObjects: orderClass.extraLat, orderClass.extraLon, nil];
NSDictionary *postDict = [NSDictionary dictionaryWithObjects:values forKeys:keys];

这给了我:


    lat =     (
        "54.720746",
        "54.719206",
        "54.717466"
    );
    lon =     (
        "56.011108",
        "56.008510",
        "56.007031"
    );

但目的是从数组中以格式 POST 数据:

["lat":"54.720746", "lon":"56.011108" ,
  "lat":"54.719206", "lon":"56.008510",
  "lat":"54.717466", "lon":"56.007031"]

需要你的帮助。 感谢关注!

【问题讨论】:

您正在创建一个包含两个数组的字典。您需要使用三个(在您的示例中,通常为“n”...)字典创建数组。切换步骤。 【参考方案1】:

正如我在评论中所说的那样 - 您需要扭转实现目标的步骤。首先是字典,然后是数组。你会得到你想要的。

NSArray *keys = [NSArray arrayWithObjects:@"lat", @"lon", nil];
NSArray *lats = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
NSArray *lons = [NSArray arrayWithObjects:@"4", @"5", @"6", nil];

// your way (not what you want)
NSArray *values = [NSArray arrayWithObjects: lats, lons, nil];
NSDictionary *postDict = [NSDictionary dictionaryWithObjects:values forKeys:keys];

// my recommendation based on what you want
NSMutableArray *postData = [[NSMutableArray alloc] init];
for (int i = 0; i < lats.count; i++) 
    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
    [dict setObject:[lats objectAtIndex:i] forKey:@"lat"];
    [dict setObject:[lons objectAtIndex:i] forKey:@"lon"];
    [postData addObject:dict];

这将为您提供以下结果:

(lldb) po postDict

    lat =     (
        1,
        2,
        3
    );
    lon =     (
        4,
        5,
        6
    );

(lldb) po postData
<__NSArrayM 0x7ffb5be4d950>(

    lat = 1;
    lon = 4;
,

    lat = 2;
    lon = 5;
,

    lat = 3;
    lon = 6;

)

【讨论】:

非常感谢!目标达到了!

以上是关于从 IOS 中的 2 个数组创建 JSON的主要内容,如果未能解决你的问题,请参考以下文章

通过使用第二个数组中的引用从第一个数组中的每个对象中提取每个值来创建一个新数组(JavaScript)

perl从2个数组中提取常见元素(fastq文件中的常见序列)

View Controller Nav 中的 iOS Refresh 按钮:单击时重新加载从解析的 JSON 创建的所有 tableViewCell

如何创建一个包含 2 个数组的字典?

是否有一种惯用的方式来操作 Ruby 中的 2 个数组?

如何从 iOS 中的 JSON 响应中获取价值