hello在nsarray中,数据就像这样
(
{
Trip = {
"trip_id" = 41;
"trip_post_date" = "2016-03-28 07:52:19";
"user_id" = 65;
};
User = {
"first_name" = irfan;
"last_name" = sheikh;
"user_id" = 65;
};
"arrival_country" = {
"city_name" = "Feldkirchen in Karnten";
"country_name" = Austria;
id = 272221;
};
"departure_country" = {
"city_name" = "Colonia La Tordilla";
"country_name" = Argentina;
id = 1234057;
};
},
{
Trip = {
"trip_id" = 40;
"trip_post_date" = "2016-03-28 07:50:48";
"user_id" = 65;
};
User = {
"first_name" = irfan;
"last_name" = sheikh;
};
"arrival_country" = {
"city_name" = Karachi;
"country_name" = Pakistan;
id = 67008;
};
"departure_country" = {
"city_name" = Lahore;
"country_name" = Pakistan;
id = 112623;
};
}
)
我怎样才能获得具有旅行ID的记录。从代码中我怎样才能获得具有trip_id
41
答案 0 :(得分:0)
假设您的NSArray
是mainArr。
NSString *tripID = @"41";
NSArray *tripIDArr [mainArr valueForKey :@"Trip"]valueForKey : @"trip_id"];
NSInteger index = [tripIDArr indexOfObject :tripID];
NSDictionary *dict = [mainArr objectAtIndex:index];
尝试以上代码行。希望它会对你有所帮助。
答案 1 :(得分:0)
您打印的json对象是NSArray
standardArr
(例如NSDictionary
} desiredDict
。例如,你期望的词典是NSArray *standardArr; //your array which you have put in your question
NSDictionary *desiredRecord; //resulting record
for (int i = 0; i < standardArr.count; i++) {
NSDictionary *tempDict = [standardArr objectAtIndex:i];
NSDictionary *tempDict2 = [tempDict objectForKey:@"Trip"];
NSString *strID = [tempDict2 valueForKey:@"trip_id"];
if ([strID isEqualToString:@"41"]) {
desiredRecord = tempDict; //if you want whole record
//or
desiredRecord = tempDict2; //if you want only Trip record
//or
desiredRecord = [tempDict objectForKey:@" User"]; //if you want User record etc.....
break;
}
}
。现在你可以做这样的事情,
Json.obj()
快速转换它,我认为这不是一项艰巨的任务..!
希望这会有所帮助:)
答案 2 :(得分:0)
您需要使用NSPredicate
来过滤NSArray
中的对象。以下代码片段将从嵌套数组中找到对象。
<强> JSON 强>
NSArray *tripAarray = @[
@{@"Trip":@{
@"trip_id" : @"41",
@"trip_post_date" : @"2016-03-28 07:52:19",
@"user_id" : @65
},
@"User" :@{
@"first_name" : @"irfan",
@"last_name" : @"sheikh",
@"user_id" : @65
},
@"arrival_country" :@{
@"city_name" : @"Feldkirchen in Karnten",
@"country_name" : @"Austria",
@"id" : @272221
},
@"departure_country" :@{
@"city_name" : @"Colonia La Tordilla",
@"country_name" : @"Argentina",
@"id" : @1234057
}
},
@{@"Trip":@{
@"trip_id" : @"42",
@"trip_post_date" : @"2016-03-28 07:52:19",
@"user_id" : @65
},
@"User" :@{
@"first_name" : @"irfan",
@"last_name" : @"sheikh",
@"user_id" : @65
},
@"arrival_country" :@{
@"city_name" : @"Feldkirchen in Karnten",
@"country_name" : @"Austria",
@"id" : @272221
},
@"departure_country" :@{
@"city_name" : @"Colonia La Tordilla",
@"country_name" : @"Argentina",
@"id" : @1234057
}
}];
<强>目标C 强>
// Create a Predicate with mapping to trip_id
NSPredicate *filterByTrip = [NSPredicate predicateWithFormat:@"%K.%K CONTAINS[c] %@", @"Trip",@"trip_id",@"41"];
// Filter your main array with predicate, resulting array will have filtered objects
NSArray *filteredArray = [tripAarray filteredArrayUsingPredicate:filterByTrip];
NSLog(@"%@",filteredArray);
<强>夫特强>
// Create a Predicate with mapping to trip_id
var filterByTrip: NSPredicate = NSPredicate(format: "%K.%K CONTAINS[c] %@", "Trip", "trip_id", @"41")
// Filter your main array with predicate, resulting array will have filtered objects
var filteredArray: [AnyObject] = tripAarray.filteredArrayUsingPredicate(filterByTrip)
NSLog("%@", filteredArray)
答案 3 :(得分:0)
当您收到JSON数据时,没有任何东西会迫使您以所需的确切形式保存数据。这通常是一个坏主意。大多数人会定义一个包含userID,tripID,tripPostDate,firstName,lastName等的模型类,而不是返回一个字典数组,验证所有传入的数据,并创建一个模型对象数组。
如果你经常需要通过tripID访问一个这样的模型对象,你只需创建一个字典映射tripID到模型对象并查找该字典中的对象 - 一旦创建了字典,任何查找都非常快,即使有数千个旅行。