2017-07-19 17 views
0

ネットワーク接続が利用できないときにplistを使用してローカルにデータを保存しています。ネットワークが利用可能なときは、ローカルに保存したデータをWebサーバーに同期します。このプロセスでは、plistデータをJSONデータに変換したいそのデータをWebサーバーに送信します。誰かが私にこれを手伝うことができますか?PlistデータをJSON形式に変換するには?

+0

以下のコードを使用plistデータの読み込み/変換((オブジェクトクラスのいくつかの制限付きで))。 EitherDictOrArrayはJSONから読み込み/変換できます(オブジェクトクラスの制限があります)。何を試しましたか? – Larme

答えて

0

あなたは、このコードでそれを行うことができます。

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

あなたは以後、JSON文字列を取得するには、それをシリアライズ辞書形式でPLISTからのデータにアクセスすることができます。

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

他の回答は廃止されたメソッド 'dictionaryWithContentsOfFile' /' initWithContentsOfFile'を使っているので、まだこの回答をupvotingしています。これはObjective-Cに書き直すのが簡単です –

0

はEitherDictOrArray(あなたのデータの最上位レベルに応じて)を使用することができる

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]; 
関連する問題