首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDictionary数据处理

NSDictionary数据处理
EN

Stack Overflow用户
提问于 2016-07-29 11:18:05
回答 3查看 93关注 0票数 0

下面是来自web服务的数据。我想把键和对组合成数组。基本上,我收到的数据是带有键值对的字典数组,但键'records‘还是字典数组。如何处理?我在下面给出了我想要的输出。如果你能帮我,那就太好了。请注意,“记录”可以是任意1、2或更多(为了举例说明,我已经将记录计数作为1和2)。

代码语言:javascript
复制
<__NSCFArray 0x7feb44c0e400>(
{
    a = "string";
    b = "string";
    records =     (
                {
            aa = "first array's first record";
            bb = "first array's first record";
            cc = "first array's first record";
        }
    );
    c = "somevalue";
    d = "some value";
    e = "some value";
},


{
    a = "string";
    b = "string";
    records =     (
                {
            aa = "second array's first record";
            bb = "second array's first record";
            cc = "second array's first record";
        },
                {
            aa = "second array's second record";
            bb = "second array's second record";
            cc = "second array's second record";
        }
    );
    c = "some value";
    d = "some value";
    e = "some value";
}
)

我要像下面这样的输出

代码语言:javascript
复制
  {
a = "string";
b = "string";
aa = "first array's first record";
bb = "first array's first record";
cc = "first array's first record";
c = "somevalue";
d = "some value";
e = "some value";
},

{
a = "string";
b = "string";
aa = "second array's first record";
bb = "second array's first record";
cc = "second array's first record";
c = "some value";
d = "some value";
e = "some value";
},

{
a = "string";
b = "string";
aa = "second array's second record";
bb = "second array's second record";
cc = "second array's second record";
c = "some value";
d = "some value";
e = "some value";
}

尝试过

代码语言:javascript
复制
NSDictionary *receivedDictionary = self.responseDictionary;
  NSArray *finalArray = [[NSArray alloc]init];
  NSMutableArray *array;
  for (int i=0; i<[receivedDictionary count]; i++) {
     array = [[receivedDictionary valueForKey:@"records"]objectAtIndex:i];

  }
  finalArray = [array arrayByAddingObjectsFromArray:array];

编辑输出

代码语言:javascript
复制
{
        a = "some string";
        b = "some string";
        records =         (
                        {
                aa = 75;
                bb = "some string";
                cc = "some string ";
            },
                        {
                aa = 76;
                bb = "some string";
                cc = "some string";
            }
        );
        c = "some value";
        d = "some value";
        e = "some value";
    }
)

如果您看到上面实际的json对象,aa中有75和76,但是在最后的数组中只保存了一个值,如下所示。

代码语言:javascript
复制
{
        a = "some string";
        b = "some string";
        c = "some value";
        d = "some value";
        aa = 76;
        bb = "some string"";
        cc = "some string";
        e = "some string";
    }
)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-29 14:03:33

我认为这应该能做您想做的事情,您最终将得到一个数组,其中包含每个记录对象的字典。(假设inputArray是问题格式的NSArray )。我试着评论每一行都发生了什么。

代码语言:javascript
复制
//First we initialize an empty array to store all the values.   
NSMutableArray *finalOutput = [NSMutableArray array];
//Next we loop through every dictionary in your input array.
for (NSDictionary *outerDict in inputArray) {
    //Make a copy of that dictionary
    NSMutableDictionary *outerCopy = [outerDict mutableCopy];
    //but remove the records object as we'll add that back again in the next step
    [outerCopy removeObjectForKey:@"records"];
    //Now we loop through all the records for outerDict
    for (NSDictionary *record in outerDict[@"records"]) {
        //Make a mutable copy
        NSMutableDictionary *flattenedDict = [record mutableCopy];
        //Add back the values from the outerCopy
        [flattenedDict addEntriesFromDictionary:outerCopy];
        //And add this final flattened dictionary to the output array
        [finalOutput addObject:flattenedDict];
    }
}
票数 2
EN

Stack Overflow用户

发布于 2016-07-29 11:26:56

尝尝这个,

代码语言:javascript
复制
 NSMutableArray *finalArray = [[NSMutableArray alloc]init];
    NSArray *jsonArray; // Your Json array Object
    for(NSDictionary * outerDictionary in jsonArray)
    {
        NSMutableDictionary *objectDictionary = [[NSMutableDictionary alloc]init];
        [objectDictionary setValue:outerDictionary[@"a"] forKey:@"a"];

        [objectDictionary setValue:outerDictionary[@"b"] forKey:@"b"];



 NSArray *records = outerDictionary[@"record"];
    for (NSDictionary *record in records) {

            [objectDictionary setValue:record[@"aa"] forKey:@"aa"];

            [objectDictionary setValue:record[@"bb"] forKey:@"bb"];

            [objectDictionary setValue:record[@"cc"] forKey:@"cc"];

        }
        [objectDictionary setValue:outerDictionary[@"c"] forKey:@"c"];

        [objectDictionary setValue:outerDictionary[@"d"] forKey:@"c"];

        [objectDictionary setValue:outerDictionary[@"e"] forKey:@"e"];
        [finalArray addObject:objectDictionary];
    }
票数 0
EN

Stack Overflow用户

发布于 2016-07-29 11:35:12

你必须查阅每本字典如下:

代码语言:javascript
复制
for (int i=0; i<[records count]; i++) {
        NSDictionary *dict = [records objectAtIndex:i];
        [dictValues addObject:[dict valueForKey:@"aa"]];
        [dictValues addObject:[dict valueForKey:@"bb"]];
        [dictValues addObject:[dict valueForKey:@"cc"]];

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38657497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档