flash Builder JSON使用实例
XML虽然强大但有人觉得xml不够简洁,编码和解码也有一定难度,于是21世纪初有人发明了JSON编码,相比xml内容少并且容易阅读,编码解码的难度也比xml简单,因此迅速得到普及成为比xml更加受欢迎的编码格式。JSON编码来源于对数据结构的分析,所有数据结构都可以分为3种基本数据组成单位:
第一种类型是标量,也就是一个单独的字符串或数字。
第二种类型是序列,也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组或列表
第三种类型是映射,也就是一个名/值对,又称作关联数组(Object或字典(Dictionary)
几乎所有语言都有这三种类型,as3也不例外,这是JSON成为通用的编码格式基础,JSON提出如下规范:
1.并列的数据之间用逗号(",")分隔。
2.映射用冒号(":")表示。
3.并列数据的集合(数组)用方括号("[]")表示。
4.映射的集合(对象)用大括号("{}")表示。
这符合像c++,java,c#,javascript等常用语言的编写习惯,as3也不例外,例如:
[
{"姓名":"张三","性别":"男","年纪":28},
{"姓名":"四凤","性别":女,"年纪":24}
]
{
"backgroundPic":"aaaa",
"mapBounds":{"x":10,"y":20},
"hero":{这里写你的英雄数据},
"secnceVec":[{场景1数据},{场景2数据}...],
"monsterVec":[{怪物1数据},{怪物2数据}...],
"coinVec":[{金币1数据},{金币2数据}...],
"whoYourDadVec":[{无敌药水1数据},{无敌药水2数据}...],
"bouncyPointVec":[{弹簧点1数据},{弹簧点2数据}...]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
package gameElements.data { import flash.geom.Point; /** * 一个关卡包含的数据 * */ public class Ele_MissionData { /** * 背景图片 * */ public var backgroundPic: String ; /** * 地图大小 * */ public var mapBounds:Point; /** * 英雄数据 * */ public var hero:Ele_Hero_Data; /** * 场景数据 * */ public var secnceVec:Vector.<Ele_Secnce_Data>; /** * 怪物数据 * */ public var monsterVec:Vector.<Ele_Monster_Data>; /** * 金币数据 * */ public var coinVec:Vector.<Ele_Coin_Data>; /** * 无敌药水数据 * */ public var whoYourDadVec:Vector.<Ele_WhosYourDad_Data>; /** * 弹簧点数据 * */ public var bouncyPointVec:Vector.<Ele_BouncyPoint_Data>; } } |
这个结构和as3的字面值非常相似,因此使用as3编写JSON有非常大的优势,目前as3中还没有内置JSON编码,需要下载Adobe的JSON工具包,下载完后就可以使用JSON类编码和解码,JSON使用起来也非常简单,它仅包括两个静态方法:JSON.encode(o:Object):String和JSON.decode( s:String, strict:Boolean = true ):*,endode()可以将关联数组、Array转化为字符串,decode()可以将json格式的字符串转化为Object,strict用于严格检查,如果格式不标准会报JSONParseError的错误,下面是使用JSON编码和解码的例子:
ssss.php
1
2
3
|
[{ "firstName" : "Isaac" , "lastName" : "Asimov" , "genre" : "sciencefiction" }, { "firstName" : "Tad" , "lastName" : "Williams" , "genre" : "fantasy" }, { "firstName" : "Frank" , "lastName" : "Peretti" , "genre" : "christianfiction" }] |
[SWF] test_json.swf - 2,137,848 bytes after decompression
zhanzhihu
34
0,1,2,3
zhanzhihu
{"lastName":"Gate","firstName":"bill","com":"Microsoft"}
[object Object],[object Object],[object Object]
Isaac
Tad
Frank
[Unload SWF] test_json.swf
flex 4.6 默认添加了json:
parse(text:String, reviver:Function = null):Object [静态] 接受 JSON 格式的字符串并返回表示该值的 ActionScript 对象。 |
JSON |
stringify(value:Object, replacer:* = null, space:* = null):String [静态] 返回 JSON 格式的字符串,用于表示 ActionScript 值。 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
<?xml version= "1.0" encoding= "utf-8" ?> <s:WindowedApplication xmlns:fx= "http://ns.adobe.com/mxml/2009" creationComplete= "init()" > <fx:Script> <![CDATA[ //import com.adobe.serialization.json.*; private var jsonStr: String ; private var jsonObj: Object ; private var jsonObj2: Object ; private var jsonStr2: String ; private var jsonObj3: Object ; internal function init(): void { jsonStr = '{"name":"zhanzhihu","age":22,"gender":"male","arr":[0,1,2,3]}' ; jsonObj = new Object (); //jsonObj = com.adobe.serialization.json.JSON.decode(jsonStr); jsonObj = JSON.parse(jsonStr); trace (jsonObj.name); trace (jsonObj.age + 12 ); trace (jsonObj.arr); trace (jsonObj[ "name" ]); jsonObj2 = new Object (); jsonObj2.firstName = "bill" ; jsonObj2.lastName = "Gate" ; jsonObj2.com = "Microsoft" ; //jsonStr2 = com.adobe.serialization.json.JSON.encode( jsonObj2 ); jsonStr2 = JSON.stringify(jsonObj2); trace ( jsonStr2 ); } ]]> </fx:Script> <fx:Declarations> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> </s:WindowedApplication> |
flash Builder JSON使用实例的更多相关文章
- Flash Builder 4的快捷方式和调试技巧
Flash Builder 4的快捷方式和调试技巧 来自于flex开发人员中心:http://www.adobe.com/cn/devnet/flex/articles/flashbuilder_sh ...
- Flash Builder 创建CSS
1.global 选择器将样式应用于所有控件 在 Flash Builder 中创建新MXML 文件并切换到设计模式 属性视图右侧的外观视图可更改外观 Flash Builder 自动创建CS ...
- Adobe Flash Builder 4.7 新功能详解
Adobe Flash Builder 4.7 Beta终于公开测试了.虽然版本号只增加了.1,增强的新功能可是一点也不含糊.我们一起来看看到底有什么新功能吧! 在我看来,最大的改变是终于提供64 ...
- Python导出Excel为Lua/Json/Xml实例教程(三):终极需求
相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出E ...
- Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验
Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
- Flash Builder 4.7 注册机完美激活方法
Flash Builder 4.7 破解注册方法目前较为通用的三种方法: 第一种:三步修改配置文件方法,这种有开发者反应这种方法在升级和创建纯 AS 项目时会存在问题,但我懒的去试这种方法的主要原因是 ...
- Flash Builder常见菊紧问题集锦
FB的错误多多,不定什么时候就让你蛋碎,路遇操蛋问题集锦如下: 1.有次用Flash Builder 4.7,打开之后马上自动关闭,试了几次都这样,解决办法如下: 到C:\Documents and ...
- Flash Builder 调试器无法连接到正在运行的应用程序(57%)
Flash Builder 调试器无法连接到正在运行的应用程序(57%),可能原因: 1,flashplayer不是debug版. 2,调试器(用debug版flashplayer随便 ...
随机推荐
- HDU 1757 A Simple Math Problem(矩阵高速幂)
题目地址:HDU 1757 最终会构造矩阵了.事实上也不难,仅仅怪自己笨..= =! f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + -- + a9 ...
- IOS 开展 分别制定了iphone 和 ipad 好? 或开发一个 Universal好?
最近因为工作的需要,.因为时间短的开发周期 开发的需要 积 至iphone 和 ipad 台 执行 优势的版本号 1.安装包,轻松管理,分布 2.您下载iphone,ipad 会自己主动下载 3.审核 ...
- T-SQL事务
事务 订火车票的时候,下一个订单,这个订单中,包含多个购买信息,要么全部执行,要么全部不执行,合作事务就是来处理这种模型的一种机制. --关键字:transaction 或 tran 简写形式 --开 ...
- C#(VS2008)服务编写-安装和部署
1.创建一个空白解决方案. 2.在解决方案下面添加两个Windows服务:WXSmsGuardNew(保护服务),WXSmsMainNew(主服务). 3.第一个服务作为保护服务,服务上添加两个控件: ...
- 解决水晶报表在IIS7下的权限问题。
http://52live.blog.sohu.com/69025059.html 解决水晶报表在IIS7下的权限问题. 有些事情真是“踏破铁鞋无觅处,得来全不费功夫”!困扰了我一段时间的水晶报表在I ...
- SSH框架中一些技巧、处理办法
1.使用jstree插件时,操作成功直接刷新jstree 该页面(index.jsp)本身使用iframe框架jstree在leftFrame,操作页(add_input.jsp.add_succes ...
- C# 启动EXE文件及带启动参数EXE
(一).先制作一个带启动参数的EXE文件. 步骤: 1.定义全局私有变量:private string[] s = new string[1]; //这里为了简单起见,只做一个参数 2. 在窗体的 ...
- 前端开发面试题收集 css
什么是CSS盒子模型 页面上的每个元素都被浏览器看做是一个矩形的盒子. 由内容.填充.边框.边界组成. 什么是 css sprite 将多个图片拼接在一个图片中,通过background-positi ...
- js统计字符串,并且判断出现次数最多的
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Python学习笔记--Python字符串连接方法总结
声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...