JSON 序列化 和 JSON 反序列化

// JSON 序列化 (OC 数据转换成 JSON 数据)

- (void)json

{

// 序列化:将OC数据类型转换成json数据类型.

// 只有数组/字典才可以转换成 json 数据.

NSDictionary *dict = @{@"name":@"zhangsan",@"age":@"18",@"sanwei":@"29"};

NSArray *array = @[@"zhangsan",@"lisi",@"wangermazi",@"gebilaowang"];

// 将字典转换成 json 数据.

if ([NSJSONSerialization isValidJSONObject:array]) { // 判断 当前对象是否能够转换成json数据.

NSData *data = [NSJSONSerialization dataWithJSONObject:array options:0 error:NULL];

[data writeToFile:@"/Users/apple/Desktop/array.json" atomically:YES];

}

// 为什么要将 OC 数据转换成 JSON 数据.

// 一般与服务器做交互的时候,直接传递给服务器 json 数据,优点:1.加快传输速率 2.方便服务器开发.

}

// JSON 反序列化  (将json数据转换成 OC数据)

- (void)jsontest

{

// 发送网络请求,得到 json 数据

// 1.实例化一个网络请求

NSURL *url = [NSURL URLWithString:@"http://localhost/weather.json"];

NSURLRequest *request = [NSURLRequest requestWithURL:url];

// 2.发送网络请求

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

// 网络请求失败处理

if (!data || connectionError) {

NSLog(@"网络请求失败,请重新尝试");

return ;

}

NSLog(@"data:%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);

NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

str = [NSString stringWithFormat:@"{%@}",str];

NSLog(@"%@",str);

NSData *data1 = [str dataUsingEncoding:NSUTF8StringEncoding];

// data 是json格式的二进制数据

// 将json数据转换成 OC数据.

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data1 options:0 error:NULL];

NSLog(@"dict%@",dict);

}];

}

时间: 2024-08-03 13:47:00

JSON 序列化 和 JSON 反序列化的相关文章

简单实体Json序列化(输出JSON的属性可变)

一.先看效果 可以看出 , 我们在序列化一个对像时, 只给出了 我们想要 输出的两个字段名,  实际实体有5个属性, 经过可变属性序列化后的JSON 结果,也是我们想要的. 二.正式上程序 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.We

JSON序列化 解析JSON

var book = { title : "JavaScript", authors : ["Nickolas . Zakas"], edition : 3, year : 2011 }, jsonText; JSON序列化 //简单序列化 SON.stringify接受3个参数 第一个需要序列化的对象 第二个参数是一个过滤器 可以是数组也可以是一个函数 jsonText = JSON.stringify( book ); //过滤 结果只包含过滤器中的字段 jso

Json序列化Newtonsoft.Json版本需要7.0以上

/// <summary> /// 将DataTable 转换成JSon字符串 /// </summary> /// <param name="table"></param> /// <returns></returns> public static string DataTableToJsonWithJavaScriptSerializer(DataTable table) { JavaScriptSeriali

C#中的二进制序列化和Json序列化

序列化就是把一个对象变成流的形式,方便传输和还原.小弟不才,总结下对二进制序列化和Json序列化的使用: 1.首先,二进制序列化(BinaryFormatter)要求要序列化的类必须是可序列化的(即在类定义的前面加Serializable关键字),而且它的父类类型也必须是可序列化的,经过查看发现,Dotnet中很多类型和结构都有这个标记:而Json序列化不用写标记: 2.如果类中某些属性不希望被二进制序列化,加NonSerialized关键字即可,而要二进制序列化的属性的类型必须是可序列化的数据

python基础5—文件 | json序列化

下面这些代码没有经过试验, 只是作为代码段作为日后的参考, 这些死的api姑且放在这里用的时候看一下再做总结 import sys print(sys.path) # ---------------文件---------------------------- # 第一种直接方式 file1 = open("test.txt") file2 = open("output.txt", "w") # w 表示 write (覆写) r 表示 read

python json 序列化反序列化 和 中文编码问题

在一个项目中,需要从云端获取一个json格式的数据,并保存到本地文件中,然后再读取出来,这中间要用到json的dumps方法和loads方法,以实现数据的序列化和反序列化.具体来说,dumps方法,可将json格式数据序列为python的相关的数据类型,通常用于打印等:loads方法则是相反,把python数据类型转换为json相应的数据类型格式要求,反序列化后可以对json数据进行各种操作.在编程过程还发现一个问题,在序列化时,中文汉字总是被转换为unicode码,在网上搜索后发现,在dump

扩展方法对json序列化及反序列化

this+类型名+变量名,.NET 3.0 之后新增的一种特性,叫"扩展方法". int类型变量都能调用toString()方法,将int类型变量转换成string型变量:如果需要更改转换的形式,比如将int类型变量转换成指定格式的字符串,并且这种方法调用非常频繁,可以编写扩展方法.扩展方法能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 例如下列代码: n

JSON序列化和反序列化的实例

之前有项目中使用到了Json的序列化和反序列化,现在将使用的实例记录下来以备查阅.如有不妥,请指教. 代码的最终目的是得到一个符合 resultClass<List<rtnGetFindMyCar>> 要求的JSON字符串 JsonHelper.cs public class JsonHelper { /// <summary> /// JSON序列化 /// </summary> public static string JsonSerializer<

Newtonsoft.Json 序列化和反序列化 时间格式【转】

1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg: A a=new A(); a.Name="Elain00"; a.Hobby="eat eat"; string jsonStr=JsonConvert.SerializeObject(a); 2.JSON反序列化 string jsonstr = "jsonString";Class model = JsonCo