AMFObject数据格式解析

AMF

  AMF是Action Message Format的简写,它是一种二进制的数据格式。它的设计是为了把actionscript里面的数据(包括Object, Array, Boolean, Number等)序列化成二进制数据,然后把这段数据随意发送给其他接收方程序,比如发给远程的服务器,在远程服务器那边,可以把这段数据给还原出来,以此达到一个数据传输的作用。

为什么要用AMF

  通常情况下我们使用JSON或者XML来做数据的传输,他们的好处是文本数据易读、容易修改,坏处在于文本数据体积较大,而且数据的组织有其局限性。那么二进制协议是不是只有AMF一个呢? 答案明显是否定的,你完全可以自定义自己的二进制数据格式,用AMF只是由于它是现成的,拿来即可用,不用重新去发明轮子。

AMFObject详解

amf.h中关于 AMFObject 是这样的定义的:

    typedef struct AMFObject
    {
        int o_num;
        struct AMFObjectProperty *o_props;
    } AMFObject;

AMFObject表示AMF对象,o_num 代表 o_props的个数, 一个对象内部可以包含N个对象属性;

    typedef struct AMFObjectProperty
    {
        AVal p_name;
        AMFDataType p_type;
        union
        {
            double p_number;
            AVal p_aval;
            AMFObject p_object;
        } p_vu;
        int16_t p_UTCoffset;
    } AMFObjectProperty;

AMFObject表示AMF对象属性,即key-value键值对。p_name表示key;p_type表示value的类型;p_vu表示value的数值。

p_vu设置为联合体的目的:

当p_type为number时, m_vu取值double类型 p_number;

当p_type为string时,    m_vu取值AVal类型 p_aval;

当p_type为object时,   m_vu取值AMFObject类型 p_object。

时间: 2024-12-08 11:10:09

AMFObject数据格式解析的相关文章

Android数据格式解析对象JSON用法

1.JSON概念: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性,从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON可以将Java对象转成json格式的字符串,可以将json字符串转换成Java.比XML更轻量级,Json使用起来比较轻便和简单.JSON数据格式,在Android中被广泛运用于客户端和服务器通信,在网络数据传输与解析时非常方便. 2.环境配置 http://code.google.com/p/googl

RAW数据格式解析

RAM数据格式解析 Raw格式是sensor的输出格式,是未经处理过的数据,表示sensor接受 到的各种光的强度. Raw数据在输出的时候是有一定的顺序的,一般为以下四种: 00: GR/BG 01: RG/GB 10: BG/GR 11: GB/RG 为什么每种情况里有两个G分量呢?这时因为人的眼睛对绿色比较敏感,所以增加了对绿色的采样.其中每个分量代表一个piexl.所以GR/BG就代表四个piexl,在物理sensor上就表示4个晶体管,用一个晶体管只采样一个颜色分量,然后通过插值计算得

android JSON数据格式 解析

一.   JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. Json建构于两种结构:  最后再加一种格式在文章的最后显示出来非常少有的格式 1."名称/值"对的集合(A collection of name/value pairs).不同的语言中.它被理解为对象(object).纪录(record).结构(struct),字典(dictionary),哈希表(hash table).有键列表(keyed list),或者关联数组 (

类xml数据格式解析

需要解析一种类xml的数据文件,数据格式如下: <head> //文件头 <type>xtype</type> <condition> key1=value1 key2=value2 </condition> <mea> key3=value3 key4=value4 </mea> <xxxx>//多个 ... </xxx> </head> <data> //数据域,多个 p

AMFObject 数据格式浅析

amf.h中关于 AMFObject 是这样的定义的: typedef struct AMFObject { int o_num; struct AMFObjectProperty *o_props; } AMFObject; 有里面变量可知 o_num 代表 o_props的个数: 在rtmp.c里有这样一段使用在 static int HandleInvoke(RTMP *r, const char *body, unsigned int nBodySize) { AMFObject obj

android 解析json数据格式(转)

json数据格式解析我自己分为两种: 一种是普通的,一种是带有数组形式的: 普通形式的:服务器端返回的json数据格式如下: {"userbean":{"Uid":"100196","Showname":"\u75af\u72c2\u7684\u7334\u5b50","Avtar":null,"State":1}} 分析代码如下: // TODO 状态处理 500

Gson解析json数据 亲自测试可用

{    HosPitalInventoryInfo: {        HosPitalInventorylist: [            {                "疫苗名称": "23价肺炎球菌多糖疫苗",                "批号": "K003747",                "规格": "0.5毫升/人份/瓶,盒1瓶",            

JSON 解析(2)

JSON 数据格式解析 和 XML 一样,JSON 也是基于纯文本的数据格式.由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象. String,Number 和 Boolean 用 JSON 表示非常简单.例如,用 JSON 表示一个简单的 String " abc ",其格式为:"abc"

iOS开发——XML/JSON数据解析

除了XML和Json,文中还涉及到的一些知识:第三方类库的使用,获取本地文件内容,网站API使用,GCD多线程编程,不做详细介绍,在代码出现的地方会注明. 先安利一波: Json XML 大数据时代,我们需要从网络中获取海量的新鲜的各种信息,就不免要跟着两个家伙打交道,这是两种结构化的数据交换格式.一般来讲,我们会从网络获取XML或者Json格式的数据,这些数据有着特定的数据结构,必须对其进行解析,得到我们可以处理的数据.所谓“解析”,就是从事先规定好的格式串中提取数据.解析的前提是数据的提供方