欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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.");
}    

 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

上一篇:

下一篇: