Monday, June 2, 2014

Mengubah Hasil Json NSDictionary ke NSData dan Sebaliknya

Jika anda mengambil data berformat json dari server dengan menggunakan AFNetworking maka otomatis result json anda akan diubah kedalam bentuk NSDictionary. Di satu sisi hal ini memudahkan anda, tetapi anda akan menemui masalah ketika json hasil dari server mengandung value null. seperti di bawah ini misalnya:
{
detail = (
{
account = 9X000101300160;
balance = "1.000.000";
date = "";
price = 0;
secCode = 9999;
type = Blocked;
value = 0;
},
{
account = 9X000101300160;
balance = "1.000.000";
date = "";
price = 0;
secCode = 9999;
type = Available;
value = 0;
}
);
header = {
date = 24092012;
investorID = IDD010239865303;
securityType = Equity;
};
}


Anda akan mendapati error ketika ingin menyimpan hasil json di atas ke NSUserdefaults, karena ada beberapa key yang valuenya adalah "". Errornya kira-kira seperti ini "Attempt to set a non-property-list object"

Untuk mensiasatinya anda bisa mengubahnya ke dalam NSData terlebih dahulu. Menjadi seperti ini:


self.jsonResult = responseObject;

NSData *data = [NSJSONSerialization dataWithJSONObject:self.jsonResult options:kNilOptions error:nil];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"securitiesBalanceJsonResult"];



kemudian untuk memanggilnya anda harus convert dari NSData ke NSDictionary:


NSError* error;
NSDictionary* jsonDB = [NSJSONSerialization
JSONObjectWithData:[defaults objectForKey:@"securitiesBalanceJsonResult"]

options:kNilOptions
error:&error];

NSLog(@"data:%@",jsonDB);

No comments:

Post a Comment