如何在 Objective C 中形成 JSON 格式的可变数组

Posted

技术标签:

【中文标题】如何在 Objective C 中形成 JSON 格式的可变数组【英文标题】:How to form an JSON formatted Mutable Array in Objective C 【发布时间】:2017-06-13 04:56:30 【问题描述】:

我需要根据响应形成一个 JSON 格式的可变数组,最初我从数据库中获取 ID,我需要检查一个空数组,然后在数组运行时根据键值向数组添加元素下次数组包含 ID 所以我必须将 KEY 和 Values 附加到各自的 ID

这是我的示例代码:

if ([hashTableArr1 containsObject:assignItmId]) 
           //     [testDict setObject:assignItmId forKey:@"id"];

                [testDict2 setObject:keyname forKey:@"keyname"];
                [testDict2 setObject:value forKey:@"value"];
                [hashTableArr addObject:testDict2];
                [testDict setObject:hashTableArr forKey:@"result"];
                [hashTableArr1 addObject:testDict];

            
            else

                NSMutableDictionary *dict1 = [[NSMutableDictionary alloc]init];
                NSMutableArray *arr1 = [[NSMutableArray alloc]init];
                NSMutableDictionary *dict2 = [[NSMutableDictionary alloc]init];
                [dict2 setObject:assignItmId forKey:@"id"];
                [dict1 setObject:keyname forKey:@"keyname"];
                [dict1 setObject:value forKey:@"value"];
                [arr1 addObject:dict1];
                [dict2 setObject:arr1 forKey:@"result"];
                [hashTableArr1 addObject:dict2];
            

我的输出是:

 (
    
    id = "1";
    result =         (
                    
            keyname = "Date";
            value = "06-02-2017";
        
    );
,
    
    id = "1";
    result =         (
                    
            keyname = Vendor;
            value = "";
        
    );
,
    
    id = "1";
    result =         (
                    
            keyname = Owner;
            value = XXX;
        
    );
,

预期结果:

 (
    
    id = "1";
    result =         (
                    
            keyname = "Purchase Date";
            value = "06-02-2017";
        ,
    
            keyname = Vendor;
            value = "";
        , 
         
            keyname = Owner;
            value = XXX;
        

    );

请更新合适的解决方案

【问题讨论】:

您是否使用循环来填充数据?如果您使用,请添加整个代码。 是的,该进程将在循环模式下运行 @batMan007 - 如果要添加字典数组,则使用 addObjectFromArray 而不是 addObject 【参考方案1】:

您现在要做的是每次都在结果键中添加一个数组,然后将字典添加到您的主数组中,但是为了您的预期结果,您必须在循环外维护一个数组并将对象添加到您维护的数组中在循环之外,然后将此数组添加到字典的结果键中,然后将此字典添加到主数组中。

您必须将此代码放在循环之外

NSMutableDictionary *dict2 = [[NSMutableDictionary alloc]init];

[dict2 setObject:assignItmId forKey:@"id"];

NSMutableArray *arr1 = [[NSMutableArray alloc]init];

循环中

if ([hashTableArr1 containsObject:assignItmId]) 
       //     [testDict setObject:assignItmId forKey:@"id"];

            [testDict2 setObject:keyname forKey:@"keyname"];
            [testDict2 setObject:value forKey:@"value"];
            [arr1 addObject:testDict2];

        
        else

            NSMutableDictionary *dict1 = [[NSMutableDictionary alloc]init];
            [dict1 setObject:keyname forKey:@"keyname"];
            [dict1 setObject:value forKey:@"value"];
            [arr1 addObject:dict1];

        

循环后

            [dict2 setObject:arr1 forKey:@"result"];
            [hashTableArr1 addObject:dict2];

【讨论】:

其实是DB Call中While循环中运行的进程 其实我不知道你没有发布的剩余代码是什么,但你现在得到的是因为我解释的这个问题。

以上是关于如何在 Objective C 中形成 JSON 格式的可变数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在Objective C中使用NSData创建json对象?

如何在 Objective C 中解析 JSON 格式

如何在 Objective C 中解析***的 JSON 数据?

如何在 Objective c 中使用 JSON 服务发布数据

如何解析 JSON 响应并在 Objective C 中使用它?

如何在 Objective C 中表示当前的 JSON 模式?