下面是来自web服务的数据。我想把键和对组合成数组。基本上,我收到的数据是带有键值对的字典数组,但键'records‘还是字典数组。如何处理?我在下面给出了我想要的输出。如果你能帮我,那就太好了。请注意,“记录”可以是任意1、2或更多(为了举例说明,我已经将记录计数作为1和2)。
<__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";
}
)我要像下面这样的输出
{
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";
}尝试过
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];编辑输出
{
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,但是在最后的数组中只保存了一个值,如下所示。
{
a = "some string";
b = "some string";
c = "some value";
d = "some value";
aa = 76;
bb = "some string"";
cc = "some string";
e = "some string";
}
)发布于 2016-07-29 14:03:33
我认为这应该能做您想做的事情,您最终将得到一个数组,其中包含每个记录对象的字典。(假设inputArray是问题格式的NSArray )。我试着评论每一行都发生了什么。
//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];
}
}发布于 2016-07-29 11:26:56
尝尝这个,
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];
}发布于 2016-07-29 11:35:12
你必须查阅每本字典如下:
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"]];
}https://stackoverflow.com/questions/38657497
复制相似问题