如何将此 json 保存为以下格式的 Plist?
Posted
技术标签:
【中文标题】如何将此 json 保存为以下格式的 Plist?【英文标题】:How do i save this json as Plist in following format? 【发布时间】:2013-12-15 20:44:26 【问题描述】:嗨,我有一个类似以下结构的 JSON
"taxi":[
"id":"173",
"taxiName":"texi cabs",
"taxiDescription":"test desc",
"contactNumber":[
"Number":"vodafoen,4686565635"
]
,
"id":"172",
"taxiName":"Blue Moon",
"taxiDescription":"test desc",
"contactNumber":[
"Number":"vodafone,45686532"
]
,
"id":"174",
"taxiName":"yellow cabs",
"taxiDescription":"test",
"contactNumber":[
"Number":"airvoice,657865"
,
"Number":"simmens,643437547457"
,
"Number":"tescom,96831635365"
]
]
Link
从此我试图将每个元素的“contactNumber”保存到一个新的 plist 中。请帮帮我。
所以最终的 plist 看起来像 所有这三个元素的联系人列表
我试过了
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *taxiPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"taxicontactlist.plist"];
NSMutableArray *newList=[[NSMutableArray alloc]init];
taxiContactRoot=[[NSDictionary alloc]initWithContentsOfFile:path];
taxiContactNewArray=taxiContactRoot[@"taxi"];
taxiContact=[taxiContactNewArray valueForKey:@"contactNumber"] ;
NSArray *s=[[NSArray alloc]init];
s=[taxiContact valueForKey:@"Number"];
//taxiContact=[taxiContact valueForKey:@"Number"];
NSString *str;
for(int i=0;i<[taxiContact count];i++)
str=[s objectAtIndex:i];
[newList addObject:str];
str=@"";
NSLog(@"%@",newList);
[newList writeToFile:taxiPath atomically:YES];
但结果是
【问题讨论】:
你试过什么代码? 【参考方案1】:将 JSON 读入 NSDictionary
(NSJSONSerialization
)。然后获取taxi
NSArray
。然后获取联系人:
NSArray *contactNumbers = [taxiArray valueForKey:@"contactNumber"];
保存此数组以生成 plist(在磁盘上)。
根据您想要提取联系人(及其子信息)的方式,您可能希望使用关键路径和collection operators(例如@unionOfArrays
)来查看。
【讨论】:
您是否真的有任何 JSON,或者您的数据是否高于NSDictionary
的日志?
我有 json ,检查链接
所以您是从磁盘上的 plist 加载进行测试?
我从链接加载,并尝试将其保存为良好结构的 plist。
我之前没试过2关,但是试试NSArray *numbers = [taxiContactNewArray valueForKeyPath:@"@unionOfArrays.contactNumber.@unionOfArrays.Number"];
以上是关于如何将此 json 保存为以下格式的 Plist?的主要内容,如果未能解决你的问题,请参考以下文章
如何将此 .plist 文件直接解析为 Swift 中的对象?
如何将此 JSON 格式转换为模型类并使用改造将响应转换为列表