iOS/Android JSON封包与解包

一、iOS JSON封包与解包


iOS自带的JSON解决方案(NSJSONSerialization),它提供了针对NSDictionary、NSArray对象进行JSON数据的封包和解包。

1、JSON封包:

针对NSDictionary:

NSDictionary *mDic =[[NSDictionaryalloc]initWithObjectsAndKeys:@"Hello world", @"Hello";

NSData *jsonData = [NSJSONSerializationdataWithJSONObject:mDic options:0error:nil];

NSString *sendString = [[NSStringalloc]initWithData:jsonDataencoding:NSUTF8StringEncoding];


针对NSArray:

NSArray *mArray = [[NSMutableArrayalloc] init;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:mArray options:0 error:nil];

NSString *sendString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];


注:通过NSDictionary、NSArray的各种组合可以组件复杂的JSON格式数据

2、JSON解包:

针对NSDictionary:

NSString *mFilePath =@"./jsonData.json";

NSData *jsonData = [NSDatadataWithContentsOfFile:mFilePath];

NSDictionary *jsonDict = [NSJSONSerializationJSONObjectWithData:jsonDataoptions: NSJSONReadingMutableContainerserror:nil];


针对NSArray:

NSString *mFilePath = @"./jsonData.json";

NSData *jsonData = [NSData dataWithContentsOfFile:mFilePath];

NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options: NSJSONReadingMutableContainers error:nil];



二、Android JSON封包与解包

Android自带的JSON解决方案(JSONObject、JSONStringer、JSONArray

1、JSON封包

JSONObject jsonObject = new JSONObject();

JSONArray jsonArray = new JSONArray();

jsonArray.put("DeviceID").put("DeviceName");

jsonObject.put("jsonArray", jsonArray);


2、JSON解包:

private static final String strJSON = "...";

JSONTokener jsonParser = new JSONTakener(strJSON);

JSObject jsonObject = (JSONObject)jsonParser.nextValue();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本人第一个Android程序,支持抓(pcap)和对抓文件进行分析(只支持http分析,自动解压gzip), 本程序无广告,无恶意代码, 如果不能用请告知手机信息和具体问题. Email: humorcolor@163.com 更新说明: V1.0.4 1.兼容Android4.2 V1.0.3 1.处理展示时间bug V1.0.2 1.增加部分机型适配 2.增加封解析时间展示 3.处理长连接解析问题 说明: 1.请确认你的手机已ROOT 或者 能够在电脑上连接ADB 2.请确认你的手机有储存卡(/sdcard) 3.如果你的手机已经有ROOT权限,可以直接使用此应用进行抓 4.如果没有获取ROOT权限,请使用 ADB命令 将应用生成的[/sdcard/tcpdump]复制到[/ststem/xbin/]目录下,并修改权限为6755后再次运行此应用抓。 5.抓文件保存在/sdcard/目录下,文件格式为.pcap 6.所抓取的数据可以直接打开分析或者在电脑上使用Wireshark打开分析 7.注意在抓过程中不要切换网络,否则会导致切换后的网络访问无法被抓取 ADB命令示例: adb root adb remount adb pull /sdcard/tcpdump c:\\ adb push c:\\tcpdump /system/xbin/ adb shell chmod 6755 /system/xbin/tcpdump 相关命令备注: 抓命令:/system/xbin/tcpdump -p -s 0 -w /sdcard/xxxxxx.pcap 查看网卡:/system/xbin/tcpdump -D 或者 netcfg (查看状态为UP的网卡) 复制文件:cp 不成功可以使用 dd if=/sdcard/tcpdump of=/system/xbin/tcpdump 没有写权限:mount -o remount,rw / 和 mount -o remount,rw /system 参考代码: 手机抓工具V2.0 pyhttpcap-master
### 回答1: AAC(Advanced Audio Coding)是一种基于MPEG-2标准的音频压缩编码格式,它采用了高效的压缩算法,能够在保留较高音质的同时减小文件大小。RTP(Real-time Transport Protocol)是一种实时传输音视频数据的协议,用于在互联网上传输音视频流。 AAC封解包是将AAC音频数据封装成RTP数据,并在接收端将RTP数据解包还原成AAC音频数据的过程。 在进行AAC封时,需要首先将原始的AAC音频数据按照RTP格式进行封装。封的过程括以下几个步骤: 1. 分片:将原始的AAC音频数据分成较小的数据块,以便在网络上传输。 2. 添加RTP头部:为每个数据块添加RTP头部,括序列号、时间戳等信息,用于接收端进行数据恢复。 3. 添加RTP扩展头部(可选):添加一些额外的信息,如源地址、目的地址等。 4. 添加UDP头部:将封装好的RTP数据添加UDP头部,以便进行网络传输。 在进行AAC解包时,需要将接收到的RTP数据解析还原成原始的AAC音频数据。解包的过程括以下几个步骤: 1. 去除UDP头部:将接收到的数据去除UDP头部,获取RTP数据。 2. 解析RTP头部:解析RTP头部获取序列号、时间戳等信息。 3. 去除RTP头部:将RTP头部去除,获取原始的AAC音频数据块。 4. 还原AAC音频数据:将获取到的音频数据块还原成原始的AAC音频数据。 封解包使得AAC音频数据能够以RTP数据的形式在网络上进行实时传输和接收,保证了音频数据的完整性和一定程度的实时性。这对于需要进行音频传输的应用场景非常有用,如实时语音通话、音频会议等。 ### 回答2: RTP(实时传输协议)是一种用于实时数据传输的协议,可以将音频、视频和其他多媒体数据封装并实时传输。AAC(Advanced Audio Coding)是一种高级音频编码格式,能够提供较高的音质和较低的数据率。 在将AAC封装成RTP时,需要进行以下步骤: 1. 分割AAC帧:AAC编码的音频数据通常以帧的形式存储,需要将这些帧进行分割,以便封装成RTP。 2. 添加RTP头部:根据RTP协议的规范,需要为每个AAC帧添加RTP头部,括序列号、时间戳和同步源等信息。 3. 打成RTP:将添加了RTP头部的AAC帧按照一定的顺序和格式打成RTP,可以使用UDP协议进行传输。 解包RTP中的AAC音频数据时,需要进行以下步骤: 1. 解析RTP头部:从接收到的RTP中提取出RTP头部的信息,括序列号、时间戳和同步源等。 2. 解析AAC帧:根据AAC编码的格式,将RTP中的数据解析成原始的AAC帧。 3. 合并帧数据:如果收到多个RTP含有同一帧中的不同部分数据,需要将这些部分数据进行合并,还原出完整的AAC帧。 4. 进行解码:将还原出的AAC帧进行解码,得到音频数据。 5. 进一步处理:可以对解码后的音频数据进行后续处理,如播放、存储或传输。 通过上述封解包的过程,我们能够将AAC音频数据封装成RTP进行实时传输,并在接收端解析和解包RTP,得到原始的AAC音频数据进行后续处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值