Objective-C Json 实例详解
程序员文章站
2023-12-20 11:50:34
objective-c json 实例详解
通过使用nsjsonserialization 可以json与foundation的相互转换。下面具体介绍 objective...
objective-c json 实例详解
通过使用nsjsonserialization 可以json与foundation的相互转换。下面具体介绍 objective-c json 的使用。
json to fundation
使用 jsonobjectwithdata 可以将 json 转化为 foundation。json的顶层可以是{} 或 []因此可以有 nsdictionary 和 nsarray 两种格式。读取使用 objectforkey 返回对应的对象。
nsstring* items = @"{"items":["item0","item1","item2"]}"; nsdata *data= [items datausingencoding:nsutf8stringencoding]; nserror *error = nil; id jsonobject = [nsjsonserialization jsonobjectwithdata:data options:nsjsonreadingallowfragments error:&error]; if ([jsonobject iskindofclass:[nsdictionary class]]){ nsdictionary *dictionary = (nsdictionary *)jsonobject; nslog(@"dersialized json dictionary = %@", dictionary); }else if ([jsonobject iskindofclass:[nsarray class]]){ nsarray *nsarray = (nsarray *)jsonobject; nslog(@"dersialized json array = %@", nsarray); } else { nslog(@"an error happened while deserializing the json data."); } nsdictionary *dict = (nsdictionary *)jsonobject; nsarray* arr = [dict objectforkey:@"items"]; nslog(@"list is %@",arr);
fundation to json
使用 datawithjsonobject 可以将 fundation 转换为 json。其中 options:nsjsonwritingprettyprinted 是分行输出json ,无空格输出使用 option:kniloptions。
下面这段代码是ios内购获取商品列表。获取后,将内容添加到json中。
nsarray *myproduct = response.products; nsdictionary *mydict; nsmutabledictionary *dict = [nsmutabledictionary dictionarywithcapacity: 4]; for(int i = 0;i<myproduct.count;++i) { //nslog(@"----------------------"); //nslog(@"product title: %@" ,[myproduct[i] localizedtitle]); //nslog(@"product description: %@" ,[myproduct[i] localizeddescription]); //nslog(@"product price: %@" ,[myproduct[i] price]); //nslog(@"product id: %@" ,[myproduct[i] productidentifier]); mydict = [nsdictionary dictionarywithobjectsandkeys: [myproduct[i] localizedtitle], @"title", [myproduct[i] localizeddescription], @"desc", [myproduct[i] price], @"price", [myproduct[i] productidentifier], @"product", nil]; [dict setvalue: mydict forkey: [myproduct[i] productidentifier]]; } if([nsjsonserialization isvalidjsonobject:dict]) { nserror* error; nsdata *str = [nsjsonserialization datawithjsonobject:dict options:kniloptions error:&error]; nslog(@"result: %@",[[nsstring alloc]initwithdata:str encoding:nsutf8stringencoding]); } else { nslog(@"an error happened while serializing the json data."); }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!