2016-05-30 5 views
1

nsmutable配列からjson配列を作成しようとしています。そうするにはNSMutableArrayをJSONArrayに変換する

は、Imは

NSData *dataArray = [NSKeyedArchiver archivedDataWithRootObject:self.countryNameArray]; 

self.countryNameArray、次のようにNSDataのためにnsmutable配列を変換しようとする国の名前が含まれている可変配列です。

その後Imが

NSString* jsonArray = [[NSString alloc] initWithBytes:[dataArray bytes] length:[dataArray length] encoding:NSUTF8StringEncoding]; 

を次のようにNSDataの外のJSON配列を作成しようとしているが、問題はイムはそれを使用しようとするとjsonArrayがヌルである、ということです。

+0

あまりにも多くの可能性のある結果:https://www.google.co.in/search?q=convert+nsmutablearray+to+json+string&ie=utf-8&oe=utf -8&client = firefox-b&gfe_rd = cr&ei = uTtMV4e_JaXT8ge72IqABw –

+0

私はそれらを試しました.... – Roger

答えて

3
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:arr options:NSJSONWritingPrettyPrinted error:&error]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
2

NSKeyedArchiverとJSONを混在させています。

archivedDataWithRootObject:指定されていない形式でNSArrayを生成します。フォーマットが何であるかはわかりませんが、後でそのデータからNSArrayを一致する呼び出しで再作成することができます。

次に、NSDataにUTF-8形式の文字列が含まれていると仮定します。そうでない理由はまったくありません。 NSStringを作成するとNSArrayを与える理由はまったくありません。

NSJSONSerializerのドキュメントをご覧ください。 JSONオブジェクトを配列や辞書からどのように作成するかは、ドキュメントからはっきりと明らかです。 NSKeyedArchiverはそれとは全く関係ありません。

1

スウィフト3

do { 
    let data = try JSONSerialization.data(withJSONObject: YOUR VARIABLE HERE) 
    let dataString = String(data: data, encoding: .utf8)! 
    print(dataString) 
} catch { 
    print("JSON serialization failed: ", error) 
} 
関連する問題