2017-07-19 125 views
0

我在网络连接不可用时使用plist在本地保存数据,当网络可用时,我想将本地保存的数据同步到Web服务器。在此过程中,我想将我的plist数据转换为JSON数据,将该数据发布到Web服务器。任何人都可以帮助我吗?如何将Plist数据转换为JSON格式?

+0

EitherDictOrArray(根据你数据的顶部电平)的代码可用于读取/转换成plist数据((对对象类有一些限制))。可以将DictOrArray读取/转换为JSON(对对象类有一些限制)。你有什么尝试? – Larme

回答

0

你可以做到这一点与此代码:

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

您可以从字典格式的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]; 

----- SWIFT 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) 
} 
} 
+0

您的答案在Swift中,作者将问题标记为Objective-C –

+0

我的错误。我将在Objective-C中进行更新。谢谢!! – luckyShubhra

+0

仍然upvoting这个答案,因为其他答案使用废弃的方法'dictionaryWithContentsOfFile' /'initWithContentsOfFile'。这个很容易改写为Objective-C –

0

使用下面

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];