JSON序列化

使用JSONObject解析JSON数据 JSONObject是官方提供用来解析JSON数据的。 要解析JSON数据,首先我们得要有一个放有JSON数据的服务器地址,这里我自己配置了一个Web服务器,并且将JSON数据放在了上面。在浏览器输入JSON数据的服务器地址,出现的内容如下所示: 从上图,我们可以看到,http://192.168.43.8/get_data.json 这个地址是JSON数据的服务器地址,当然这个是我自己配... 阅读详情

//

//  ViewController.m

//  09-JSON序列化

//

//  Created by Apple on 15/10/23.

//  Copyright © 2015 heima. All rights reserved.

//


#import "ViewController.h"

#import "HMVideo.h"

@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    //1 自己拼json形式的字符串,比较困难

//    NSString *jsonStr = @"{\"name\":\"zhangsan\",\"age\":18}";

//    [self postJSON:[jsonStr dataUsingEncoding:NSUTF8StringEncoding]];

    

    

    //2 字典

//    NSDictionary *dic = @{@"name":@"zhangsan",@"age":@(18)};

//    //JSON序列化

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

//    [self postJSON:data];

    

    //3 数组

//    NSArray *array = @[

//                      @{@"name":@"zhangsan",@"age":@(18)},

//                      @{@"name":@"lisi",@"age":@(19)}

//                      ];

//    //JSON序列化

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

//    [self postJSON:data];

    

    

    

    //4 自定义对象进行JSON序列化

//    HMVideo *v1 = [[HMVideo alloc] init];

//    v1.videoName = @"ll-001.avi";

//    v1.size = 500;

//    v1.author = @"lilei";

//    //KVC给对象内部的成员变量赋值

//    [v1 setValue:@(NO) forKey:@"_isYellow"];

//    

//    

////    NSLog(@"%@",v1);

//    //自定义对象不能进行JSON序列化, 必须先把自定义对象转换成字典或数组

////    if (![NSJSONSerialization isValidJSONObject:v1]) {

////        NSLog(@"sorry,对象不能进行json序列化");

////        return;

////    }

//    

//    //把自定义对象转换成字典 KVC

//    NSDictionary *dic = [v1 dictionaryWithValuesForKeys:@[@"videoName",@"size",@"author",@"_isYellow"]];

//

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

//    [self postJSON:data];

    

    

    //5 把自定义对象的数组 进行JSON序列化

    HMVideo *v1 = [[HMVideo alloc] init];

    v1.videoName = @"ll-001.avi";

    v1.size = 500;

    v1.author = @"lilei";

    //KVC给对象内部的成员变量赋值

    [v1 setValue:@(YES) forKey:@"_isYellow"];

    

    HMVideo *v2 = [[HMVideo alloc] init];

    v2.videoName = @"hmm-001.avi";

    v2.size = 500;

    v2.author = @"韩梅梅";

    //KVC给对象内部的成员变量赋值

    [v2 setValue:@(NO) forKey:@"_isYellow"];

    

    

    NSArray *array = @[v1,v2];

    

//    if (![NSJSONSerialization isValidJSONObject:array]) {

//        NSLog(@"sorry,不能进行JSON序列化");

//        return;

//    }

    

    //把自定义对象的数组,所有的对象都转换成字典

    NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:2];

    for (HMVideo *video in array) {

        NSDictionary *dic = [video dictionaryWithValuesForKeys:@[@"videoName",@"size",@"author",@"_isYellow"]];

        [mArray addObject:dic];

    }

    

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

    [self postJSON:data];

    

    

    

}


//

- (void)postJSON:(NSData *)data {

    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/php/upload/postjson.php"];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    //设置post

    request.HTTPMethod = @"post";

    request.HTTPBody = data;

    

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

        if (connectionError) {

            NSLog(@"连接错误 %@",connectionError);

            return;

        }

        

        //

        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;

        if (httpResponse.statusCode == 200 || httpResponse.statusCode == 304) {

            //解析数据

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

            NSLog(@"%@",str);

        }else{

            NSLog(@"服务器内部错误");

        }

    }];


}


@end


JSON序列化和反序列化 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端的接口数据格式。 阅读详情

相关推荐

Java JSON 序列化

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。Fastjson 源码地址Fastjson 中文 Wiki提供服务器端、安卓客户端两种解析工具,性能表现较好。提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。

专注于技术分享的博主 1182

iOS 4种JSON数据解析方法详解

在网络中数据的传输很多格式都是JSON或是XML,之前的博文已经介绍过XML,这篇介绍JSON数据。 在对JSON数据进行解析过程中大致有四种方法可供选择,包括原生的NSJSONSerialization,TouchJsonJSONKit,SBJon;其中后三种方法都要导入第三方类库。(在使用第三方类库过程中,如果项目是支持ARC的话,而这些类库文件不支持ARC特性的话,就会遇到ARC问题保错

小邓笔记 5999

json 序列化与反序列化

二、json 序列化与反序列化概念速记• 序列化(Serialization):把 Python 对象 → JSON 格式的文本(str 或字节)。 • 反序列化(Deserialization):把 JSON 文本 → Python 对象。 • JSON 支持的数据类型:object(dict)、array(list)、string(str)、number(int/float)、true/false(bool)、null(None)。 • 任何 超出上述类型 的对象(datetime、Decimal、by

2301_82107778的博客 954

iOS开发,json解析

JSON解析 什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim"]} 标准JSON格式的注意点:key必须用双引号

u012222212的专栏 820

iOS NSDictionary转JSON字符串(去除换行和空格)

新手入门 请多指教 文章目录前言Object CFoundationdataWithJSONObjectoptionsNSJSONWritingPrettyPrintedNSJSONWritingSortedKeysNSJSONWritingFragmentsAllowedNSJSONWritingWithoutEscapingSlashes 前言 好嘛,iOS组被裁净了。感觉这是个很简单的功能,也是够我查半天api的。哪里不对的,希望大家指正。 Object C + (NSString *)conve.

CrazyApes的博客 6351

IOS5.0 自带JSON解析

IOS5.0开始支持JSON,所以不用第三方的解析了。 //将Foundation(NSDictionary、NSData) 转换为JSon格式的NSData 用来发送 //+ dataWithJSONObject:options:error:   //将JSON格式的Data转换为Foundation(NSDictionary、NSData)   用来解析 //+ JS

The Life with iOS 1220

JSON 序列化序列化

其实就是转换数据格式的过程。

weixin_61819056的博客 1730

Json Js Json对象 Json字符串 序列化与反序列化

Json Js Json对象 Json字符串 序列化与反序列化 Json JavaScript Object Notation -JavaScript 用于存储和交换文本信息的语法,进行数据的传输,JSON比 XML 更小、更快,更易解析。 var person = {"name": "张三", age: 23, 'gender': true}; var ps = [{"name": "张三", "age": 23, "gender": true}, {"name": "李四", "

许久 2514

【Java序列化JSON序列化、Hessian序列化

目录简介JAVA原生序列化Hessian 序列化JSON 序列化 简介 内存中的数据对象只有转换为二进制流才可以进行数据持久化和网络传输。将数据对象转换为二进制流的过程称为对象的序列化(Serialization)。 反之,将二进制流恢复为数据对象的过程称为反序列化(Deserialization)。 序列化需要保留充分的信息以恢复数据对象,但是为了节约存储空间和网络带宽,序列化后的二进制流又要尽可能小。 序列化常见的使用场景是 RPC 框架的数据传输。常见的序列化方式有三种: JAVA原生序列化 Java

uziuzi669的博客 1477

java序列化json序列化效率对比

一、背景 有项目需要传输Map结构的数据,有人倾向用Java序列化来做,有人倾向用JSON序列化来做。所以我们还是比比吧。 Java观点:Object2Object,使用时简单快速。 JSON观点:JSON格式与语言无关,扩展性强,速度也应该不慢。 大家可能对Java序列化都有一个错误的认识,认为Java序列化JSON序列化效率高并且序列化的数据小,其实实际上并不一定

cws1214的专栏 2万+

Json序列化技术

从比特理解Json序列化方式 关于Json 可以说是web 开发不管是前端还是后端都是非常的熟悉,第一次接触Json,是在我大一的寒假,因为人生中第一个servlet原生项目中要使用所以进行了较为粗浅的研究: 当时乃至之后的很长一段时间的理解都是——json 就是前后端数据传输的一个约定的消息格式,这种消息格式因为前后端都支持,并且是一种规范,所以我可以将对象直接转为一个Json 字符串,然后写入到返回给前端的响应流中,但是其实并不理解为什么要这样做,只是了解到前后端对接可以这样做。 当仔细研究了协议和

Jeffrey_oWang的博客 9600

使用Golang进行JSON序列化

总览 JSON是最流行的序列化格式之一。 它是人类可读的,相当简洁的,任何Web应用程序都可以使用JavaScript轻松地对其进行解析。 Go作为一种现代编程语言,在其标准库中对JSON序列化提供了一流的支持。 但是这里有些角落和缝隙。 在本教程中,您将学习如何有效地对JSON以及从JSON序列化和反序列化任意数据和结构化数据。 您还将学习如何处理高级场景,例如序列化枚举。 json...

代码教主 4143

golang JSON序列化

(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于, Standard ECMA-262 3rd Edition - December 1999的一个子集。

m0_70982551的博客 1270

C# JSON序列化与反序列化

C# JSON序列化与反序列化

wangnaisheng的专栏 9702

【C#】【JsonJson序列化与反序列化

JSON 类似 XML JSON 是纯文本 JSON 具有“自我描述性”(人类可读) JSON 具有层级结构(值中存在值) JSON 可通过 JavaScript 进行解析 JSON 数据可使用 AJAX 进行传输 为什么使用 JSON? 对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用: 使用 XML 读取 XML 文档 使用 XML DOM 来循环遍历文档 读取值并存储在...

学海无涯苦作舟 1159

Java序列化 json序列化_Java序列化JSON序列化大比拼

一、背景有项目需要传输Map结构的数据,有人倾向用JAVA序列化来做,有人倾向用JSON序列化来做。所以我们还是比比吧。Java观点:Object2Object,使用时简单快速。JSON观点:JSON格式与语言无关,扩展性强,速度也应该不慢。大家可能对Java序列化都有一个错误的认识,认为Java序列化JSON序列化效率高并且序列化的数据小,其实实际上并不一定是这样,我这次就想通过实际测试来...

weixin_42140710的博客 1468

Python JSON序列化

引言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,独立于编程语言的文本格式。 序列化(Serialization): 一种数据转换方法,将结构化数据转换为用于存储交换的格式,并且可以从新格式恢复原始的结构化数据。如二进制序列化。 在微服务盛行的当下,不论是与其他APP共享数据还是提供REST API接口,JSON是重要的数据交换格式。那么在P...

xdshust的博客 1322
上一篇: socket访问百度
下一篇: 运行时runtime
paulsi
博客等级 码龄11年 0粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值