在使用 SBJsonParser 解析一些 JSON 时,我目前遇到了一个奇怪的问题。
现在,我正在解析的 JSON 如下。
[
{
"Company":{
"id":"1",
"company_name":null
},
"relations":{
"store":[
{
"id":"1",
"restaurant_name":"Dubai",
"brief_description":null
},
{
"id":"2",
"restaurant_name":"Test2",
"brief_description":null
}
]
}
}
]
我可以轻松地创建一个 NSDictionary 并用正确的公司 节点信息填充它(?)。
但是当涉及到关系和存储节点时,我的问题就出现了。
NSDictionary *relations = [object valueForKey:@"relations"];
NSArray *multipleStores = [relations valueForKey:@"store"];
NSLog(@"relations: %@", relations);
for (NSDictionary *singleStore in multipleStores){
NSLog(@"Single Store: %@", singleStore);
[company grabStoreInformation:singleStore];
}
这是上面 NSLog 的返回值。
relations: (
{
store = (
{
"brief_description" = "<null>";
id = 1;
"restaurant_name" = Dubai;
},
{
"brief_description" = "<null>";
id = 2;
"restaurant_name" = Test2;
}
);
}
)
如果不是因为 NSLog 中发生的事情,现在这会很好。似乎 singleStore 实际上并没有获取单个存储节点,而是将两个存储节点加在一起。
Single Store: (
{
"brief_description" = "<null>";
id = 1;
"restaurant_name" = Dubai;
},
{
"brief_description" = "<null>";
id = 2;
"restaurant_name" = Test2;
}
)
问题是,我需要将每个存储节点添加到 NSMutableArray 中。因此 NSDictionary 将被添加到 NSMutableArray 中,然后可以在其他地方访问(对于 UITableView 数据源)。
将存储节点分开的任何帮助将不胜感激。
编辑 根据要求,整个解析代码:
SBJsonParser *parser = [[SBJsonParser alloc] init];
// parse the JSON string into an object - assuming [response asString] is a NSString of JSON data
NSDictionary *object = [parser objectWithString:[response asString] error:nil];
[parser release];
NSDictionary *companyDetails = [object valueForKey:@"Company"];
MACompany *company = [MACompany sharedMACompany];
[company initWithDetails:companyDetails];
NSDictionary *relations = [object valueForKey:@"relations"];
NSArray *multipleStores = [relations valueForKey:@"store"];
NSLog(@"relations: %@", relations);
for (NSDictionary *singleStore in multipleStores){
NSLog(@"Single Store: %@", singleStore);
[company grabStoreInformation:singleStore];
}
如您所见,我依靠单例类来复制 JSON 的元素。我认为,这与我在解决如何拆分单个商店字典时想要实现的目标无关。