以下の形式のjson文字列を作成しようとしています:
{
"cat_id" : 4992,
"brand" : "Toshiba",
"weight" : { "gte":1000000, "lt":1500000 },
"sitedetails" : {
"name" : "newegg.com",
"latestoffers" : {
"currency": "USD",
"price" : { "gte" : 100 }
}
}
}
これを生成するには、次の方法を使用しました。
-(void)queryBuilderWithObj:(NSString *)object andKeyValue:(NSString *)key{
NSLog(@"object %@ and key %@",object,key);
if([key rangeOfString:@","].location == NSNotFound){
[querybuild setObject:object forKey:key];
}else{
NSArray *tempArray = [key componentsSeparatedByString:@","];
int index = tempArray.count - 1;
NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init];
while (index) {
if (index == tempArray.count - 1) {
if([querybuild objectForKey:[tempArray objectAtIndex:index]]){
NSMutableArray *objArray = [[NSMutableArray alloc] init];
[objArray addObject:[querybuild objectForKey:[tempArray objectAtIndex:index]]];
[objArray addObject:object];
[tempDict setObject:objArray forKey:[tempArray objectAtIndex:index]];
}else{
[tempDict setObject:object forKey:[tempArray objectAtIndex:index]];
}
}else{
if([querybuild objectForKey:[tempArray objectAtIndex:index]]){
NSMutableArray *objArray = [[NSMutableArray alloc] init];
[objArray addObject:[querybuild objectForKey:[tempArray objectAtIndex:index]]];
NSMutableDictionary *subDict = [[NSMutableDictionary alloc] init];
[subDict setDictionary:tempDict];
[objArray addObject:subDict];
[tempDict setObject:objArray forKey:[tempArray objectAtIndex:index]];
}else{
NSMutableDictionary *subDict = [[NSMutableDictionary alloc] init];
[subDict setDictionary:tempDict];
[tempDict setObject:subDict forKey:[tempArray objectAtIndex:index]];
}
}
index --;
}
[querybuild setObject:tempDict forKey:[tempArray objectAtIndex:0]];
}
NSLog(@"querybuild %@ ",querybuild);
}
生成される最終的な nsmutabledictionary は次のとおりです。
querybuild {
brand = Toshiba;
"cat_id" = 4992;
sitedetails = {
gte = 100;
latestoffers = {
gte = 100;
price = {
gte = 100;
};
};
price = {
gte = 100;
};
};
weight = {
lt = 1500000;
};
}
以下のようにオブジェクトとキーを渡しました。
[sem queryBuilderWithObj:@"4992" andKeyValue:@"cat_id" ];
[sem queryBuilderWithObj:@"Toshiba" andKeyValue:@"brand"];
[sem queryBuilderWithObj:@"1000000" andKeyValue:@"weight,gte"];
[sem queryBuilderWithObj:@"1500000" andKeyValue:@"weight,lt"];
[sem queryBuilderWithObj:@"newegg.com"andKeyValue:@"sitedetails,name" ];
[sem queryBuilderWithObj:@"USD" andKeyValue:@"sitedetails,latestoffers,currency"];
[sem queryBuilderWithObj:@"100" andKeyValue:@"sitedetails,latestoffers,price,gte"];
必要な出力を生成する方法について何か考えはありますか? querybuild は、クラス変数として宣言されたこのメソッドの nsmutabledictionary オブジェクトですか?