通过将 JSON 数据与数组进行比较来创建数组
Posted
技术标签:
【中文标题】通过将 JSON 数据与数组进行比较来创建数组【英文标题】:Create array by comparing JSON data to an array 【发布时间】:2014-10-19 17:14:25 【问题描述】:我正在从 json 文件访问“酒店”:
NSArray *hotel = [jsonObject valueForKeyPath:@"location.hotel"];
打印出来像(更新):
<__NSCFArray 0x7b254d70>(
test = A;
hotel = (
luxuryHotels = hotel1;
,
luxuryHotels = hotel2;
,
我想检查数组“hotel”是否包含来自另一个数组“myHotels”的对象,如果包含,则创建一个仅包含这些对象的数组。
NSArray *myHotels = [NSArray arrayWithArray:hotel.luxuryHotels];
NSMutableArray *hotel2 = [[NSMutableArray alloc] init];
for (NSArray *object in hotel)
NSMutableSet *set1 = [NSMutableSet setWithArray: object];
NSSet *set2 = [NSSet setWithArray: myHotels];
[set1 intersectSet: set2];
NSArray *resultArray = [set1 allObjects];
NSLog(@"resultArray is %@",resultArray);
[hotel2 addObject:resultArray];
'hotel2' 的打印是这样的:( ),( 凯悦 ),( )
有没有办法得到一串唯一的凯悦?或者一种组合数组字典的方法,以便在列出多个酒店时显示在列表中?
【问题讨论】:
[jsonObject valueForKeyPath:@"location.hotel"] 返回的结构不清楚。请发布酒店日志的实际输出。 查看更新,让我知道我还能提供什么。 我认为您不了解数据结构,我们当然也不了解。添加 NSLog 语句以在每个步骤中转储您的数组。这意味着我不知道hotel
是否应该是一个数组:hotel.luxuryHotels
。
【参考方案1】:
仍然不是 100% 清楚数据结构是什么样的,但您可以尝试这样的方法
将您的初始数据结构(数组数组)折叠成一个数组,然后将其转换为一个可变集合
NSArray *flattenedHotels = [jsonObject valueForKeyPath:@"@distinctUnionOfArrays.location.hotel"];
NSMutableSet *hotels = [NSMutableSet setWithArray:flattenedHotels];
接下来你只需与myHotels
进行交集
[hotels intersectSet:[NSSet setWithArray:myHotels]];
NSArray *result = hotels.allObjects;
【讨论】:
以上是关于通过将 JSON 数据与数组进行比较来创建数组的主要内容,如果未能解决你的问题,请参考以下文章
通过使用 Spring Boot 插入来自循环的所有数据来创建 JSON 数组
将日期与laravel中mysql json数组的每个值进行比较