如何将 Plist 数据转换为 JSON 格式?



当网络连接不可用时,我正在使用 plist 在本地保存我的数据,当网络可用时,我想将本地保存的数据同步到 Web 服务器。在这个过程中,我想将我的 plist 数据转换为 JSON 数据并将该数据发布到 Web 服务器。谁能帮我一个这个?

您可以从字典格式访问 plist 中的数据,从此对其进行序列化以获取 json 字符串。

NSString *path = [[NSBundle mainBundle] pathForResource:@"yourPlistName" ofType:@"plist"];
NSData* data = [NSData dataWithContentsOfFile:path];
NSDictionary* dict= [NSPropertyListSerialization propertyListFromData:data
mutabilityOption:NSPropertyListImmutable
format:NSPropertyListXMLFormat_v1_0
errorDescription:NULL];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict 
options:NSJSONWritingPrettyPrinted error:&error]; 
NSString *jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

-----斯威夫特3-----

if let url = Bundle.main.url(forResource:"yourPlistName", withExtension: "plist") {
do {
let data = try Data(contentsOf:url)
let dict = try PropertyListSerialization.propertyList(from: data, options: [], format: nil) as! [String:Any]
let jsonData = try JSONSerialization.data(withJSONObject: dict , options: .prettyPrinted)
// jsondata  your required data
} catch {
print(error)
}
}

您可以使用以下代码执行此操作:

NSMutableDictionary *plistDic = [[NSMutableDictionary alloc] initWithContentsOfFile: path];

使用以下代码

NSString * plistPath = @“data.plist”;
NSMutableDictionary *plistData = [[NSMutableDictionary alloc] initWithContentsOfFile: plistPath];
NSError * err;
NSString * jsonStr = nil;
NSData * jsonData = [NSJSONSerialization  dataWithJSONObject:plistData options:0 error:&err];
jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

我的plist是NSArray,而不是NSDictionary,所以我必须这样做:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"myPlist" ofType:@"plist"];
NSArray *menuArray = [[NSArray alloc] initWithContentsOfFile:plistPath];
NSError *err;
NSString *jsonStr = nil;
NSData *jsonData = [NSJSONSerialization  dataWithJSONObject:menuArray options:0 error:&err];
jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

最新更新