这是我的时间条目Spent_on的JSON响应1:“2015-12-27”
{
"A": {
"user": {
"id": 1,
"name": "B"
},
"startday": "2015-12-27",
"status": "New",
"total": 2,
"time_entries": [{
"id": 768,
"project": {
"id": 8,
"name": "C"
},
"user": {
"id": 1,
"name": "B"
},
"activity": {
"id": 8,
"name": "D"
},
"hours": 2,
"comments": "",
"spent_on": "2015-12-27"
}]
}
}
我创建了这样的字典格式来进行后期操作:
NSDictionary * response =@{@"A": @{@"user": @{@"id": @1,@"name": @"B"},@"startday@": @"2015-12-27",@"status@": @"New",@"total@": 2,@"time_entries@": [{@"id@": 768,@"project@": {@"id@": 8,@"name": @"C"},@"user": {@"id": 1,@"name": @"B"},@"activity": {@"id": 8,@"name": @"D"},@"hours": 2,@"comments": @"",@"spent_on": @"2015-12-27"}]}};
这是我的JSON响应2,用于时间输入Spent_on:“2015-12-27”和“2015-12-28”
{
"A": {
"user": {
"id": 1,
"name": "B"
},
"startday": "2015-12-27",
"status": "New",
"total": 6,
"time_entries": [{
"id": 768,
"project": {
"id": 8,
"name": "C"
},
"user": {
"id": 1,
"name": "B"
},
"activity": {
"id": 8,
"name": "D"
},
"hours": 2,
"comments": "",
"spent_on": "2015-12-27"
}, {
"id": 775,
"project": {
"id": 8,
"name": "C"
},
"user": {
"id": 1,
"name": "B"
},
"activity": {
"id": 8,
"name": "D"
},
"hours": 4,
"comments": "",
"spent_on": "2015-12-28"
}]
}
}
json响应2还有一个time_entry id,hours,spent_on而不是json response1.similarly,对于每个新日期(spent_on)的每个新小时条目。将生成一个新的时间条目id,并且响应长度也会增加。< / p>
那么,如何为上面的响应创建可变字典或字典,以及是否会出现不同的小时和不同的日期(例如整整一周)。如何为它创建字典?还有其他任何方法吗?谢谢。提前谢谢。
答案 0 :(得分:0)
char* jsonCStr = "{ \
\"A\": { \
\"user\": { \
\"id\": 1, \
\"name\": \"B\" \
}, \
\"startday\": \"2015-12-27\", \
\"status\": \"New\", \
\"total\": 2, \
\"time_entries\": [ \
{ \
\"id\": 768, \
\"project\": { \
\"id\": 8, \
\"name\": \"C\" \
}, \
\"user\": { \
\"id\": 1, \
\"name\": \"B\" \
}, \
\"activity\": { \
\"id\": 8, \
\"name\": \"D\" \
}, \
\"hours\": 2, \
\"comments\": \"\", \
\"spent_on\": \"2015-12-27\"\
} \
] \
} \
}";
NSString* jsonStr = [NSString stringWithCString:jsonCStr encoding:NSUTF8StringEncoding];
NSData* jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:nil];
答案 1 :(得分:0)
你问:
那么,如何为上面的响应创建可变字典或字典?
使用JSONObjectWithData
解析时,请使用NSJSONReadingMutableContainers
选项。这将导致可变的dictionarys /数组。
NSError *error;
NSMutableDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
如果会出现不同的小时和不同的日期(例如整整一周),那么如何为它创建字典呢?
因此,请参考可变数组的时间条目:
NSMutableArray *timeEntries = dictionary[@"A"][@"time_entries"];
然后为新日期添加您想要的任何内容:
[timeEntries addObject:@{@"id": @768,
@"project": @{@"id": @8, @"name": @"C"},
@"user": @{@"id": @1, @"name": @"B"},
@"activity": @{@"id": @8, @"name": @"D"},
@"hours": @2,
@"comments": @"",
@"spent_on": @"2015-12-29"}];
根据需要重复(或循环)。