在 Objective C 中创建 JSON

Posted

技术标签:

【中文标题】在 Objective C 中创建 JSON【英文标题】:Create a JSON in Objective C 【发布时间】:2011-06-28 19:05:51 【问题描述】:

我想创建一个这种格式的 JSON

"request": 
  "longitude": 43.76,
  "latitude": 12.34,
  "category": [1,2,3],
  "subCategory": [
    "subCatId": [1,2,3],
    "subCatId": [1,2,3]
  ]

我正在使用下面的代码来创建它

-(NSString*)populateUserPreferences

    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
    NSMutableArray *categoryId = [[NSMutableArray alloc] init];
    NSMutableArray *subCategoryId = [[NSMutableArray alloc] init];
    NSMutableDictionary *subCatDict = [[NSMutableDictionary alloc] init];    
    for (int i=0;i<10; i++) 
    
        [categoryId addObject:[NSNumber numberWithInt:i]];
    

    for (int i=1; i<10; i++) 
    
        NSMutableArray *subCats = [[NSMutableArray alloc] init];
        for (int j=0; j<i; j++)
        
            [subCats addObject:[NSNumber numberWithInt:j]];
        
        NSDictionary *subCatArray = [NSDictionary dictionaryWithObject:subCats forKey:@"subCatId"];
        [subCatDict setDictionary:subCatArray];
        [subCategoryId addObject:subCats];
        [subCats release];
    
    [dict setObject:[NSNumber numberWithFloat:12.3456] forKey:@"latitude"];
    [dict setObject:[NSNumber numberWithFloat:72.2134] forKey:@"longitude"];

    [dict setObject:categoryId forKey:@"category"];
    [dict setObject:subCatDict forKey:@"subCategory"];
    NSString * request = [dict JSONRepresentation];
    NSLog(request);
    NSDictionary *req = [NSDictionary dictionaryWithObject:dict forKey:@"request"];
    return [req JSONRepresentation];

但在子类别中,我只能从最后一个循环中获取条目。见下文

"request": 
  "longitude":72.213401794433594,
  "latitude":12.345600128173828,
  "category":[0,1,2,3,4,5,6,7,8,9],
  "subCategory": 
    "subCatId":[0,1,2,3,4,5,6,7,8]
  

有人可以帮我创建所需的 JSON 字符串吗? 谢谢

【问题讨论】:

您的缩进使它有点难以阅读。我可以建议将花括号与for 语句放在同一行吗? 你知道有很多 3rd 方 objetive-c json 类(例如 JSONKit),对吗? (在ios5中,苹果提供了自己的) 【参考方案1】:

第二个 for 循环中有一行在每次迭代时都会覆盖 subCatDict。

for (int i=1; i<10; i++) 

   ...
   [subCatDict setDictionary:subCatArray];
   ...

我认为您真正想要使用的是一系列字典。

【讨论】:

您的回复 字典数组 也帮助我将所需的 JSON 重写为 xcode 生成的格式。也谢谢我加了一个高分。

以上是关于在 Objective C 中创建 JSON的主要内容,如果未能解决你的问题,请参考以下文章

在 Objective C for iPhone 中创建 zip 文件

在Objective C中创建JSON数组[重复]

如何在类属性的Objective C中创建类似json的结构?

在 iOS 中创建可调整大小的图像/矩形 - Objective C

在一个线程中创建并在objective-C中传递给另一个线程的自动释放对象

在 Objective-C 中创建私有属性