版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
和XML一样,JSON也是基于纯文本的数据格式。由于JSON天生是为个简单的String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object对象。String,NumberBooleanJSONJSON一个简单的String“abc”,其格式为:他Unicode字符可以直接输出。下图是一个String的完整表示结构:1StringNumber2NumberBooleantruefalseJavaScriptnull示为null,注意,true、false和null都没有双引号,否则将被视为一个String。JSON还可以表示一个数组对象,使用[]包含所有元素,每个元素用逗号Boolean和一个null:Object对象在JSON中是用{}包含一系列无序的Key-Value键值对表ObjectJavaMap<String,Object>,而不是Java的Class。注意Key只能用String表示。例如,一个Address对象包含如下Key-JSON{{"city":"Beijing","street":"ChaoyangRoadValueObjectObjectPersonnameaddress{"city":"Beijing","street":"ChaoyangRoad}JavaScriptJSONJSONJavaScript理JSON格式的数据。WebJavaScriptJSON一个简单的JavaScript方法就能看到客户端如何将JSON数据表示给用户:functionfunctionhandleJson()var{"city":"Beijing","street":"ChaoyangRoad}JSON{"city":"Beijing","street":"ChaoyangRoad}XMLDOM,JSONAjaxJSONAjaxJSONPrototype(JavaScript)提供了evalJSON()JSONJavaScriptnewnew{method:onSuccess:function(transport)varjson=}JSON将演示将一个Java对象编码为JSON格式的文本。须用(")而非(')表示字符串:staticstaticStringstring2Json(Strings)StringBuildersb=newStringBuilder(s.length()+20);for(inti=0;i<s.length();{charc=s.charAt(i);switch(c){casecasecasecasecasecasecasecase}}}NumberJSONJavaInteger,Long,Float等多种NumberstaticstaticStringnumber2Json(Number{return}BooleantoString()JSONstaticstaticStringboolean2Json(Boolean{return}JSONstaticstaticStringarray2Json(Object[]{if(array.length==0)return"[]";StringBuilderStringBuildersb=newStringBuilder(array.length<<4);for(Objecto:{}//将最后添加的','变为']':returnsb.toString();}最后,我们需要将Map<String,Object>编码为JSON格式,因为JavaScriptObjectJavaMap<String,Object>staticstaticStringmap2Json(Map<String,Object>{ifreturnStringBuildersb=newStringBuilder(map.size()<<4);Set<String>keys=map.keySet();for(Stringkey:keys){Objectvalue=map.get(key);}//将最后的','变为'}':returnsb.toString();}能够将任意的Java对象编码为JSON格式:publicpublicstaticStringtoJson(Object{ifreturnif(oinstanceofif(oinstanceofBoolean)if(oinstanceofNumber)if(oinstanceofMap)returnmap2Json((Map<String,Object>)o);if(oinstanceofObject[])returnthrownewRuntimeException("Unsupportedtype:"+}我们并未对Java对象作严格的检查。不被支持的对象(例如List)将直Object>对象的Key也不能包含特殊字符。细心的读者可能还会发现循环引用的对象会引发无限递归,例如,精心构造一个循环引用的Map,就可以检测到publicvoidtestRecurrsiveMap2Json()Map<String,Object>map=newHashMap<String,Object>();map.put("key",map);}JSONJavaScriptServletMVCJSONMIME型(application/json)和字符编码。假定服务器使用UTF-8用以下代码输出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 双方自愿离婚协议书七篇
- 二人合伙协议书2025
- 自发性多汗症病因介绍
- 广东省佛山市南海区、三水区2023-2024学年九年级上学期期末数学试题
- 《电机技术应用》课件 3.3.3 直流电机的制动
- (立项备案方案)压制封头项目立项申请报告
- (2024)欢乐世界旅游开发项目可行性研究报告申请备案编制(一)
- 2023年天津市高考语文模拟试卷
- 江苏省盐城市建湖县汉开书院学校2023-2024学年七年级上学期第二次月考道德与法治试题(原卷版)-A4
- 2023年乙烯冷箱产品项目融资计划书
- 2023-2024学年湖南省岳阳市九年级(上)期末数学试卷(含解析)
- 虫控消杀行业报告
- 导医接待中的患者满意度调查
- 《古从军行李颀》课件
- ISO9001质量管理体系内审员培训
- 国开电大可编程控制器应用实训形考任务5
- 国开电大 建筑工程计量与计价 形考作业1-4答案
- 《学位论文规范写作》课件
- 新教师入职培训新学期新教师入职培训课件
- pmc年终总结报告
- 上海话剧艺术中心岗位设置实施方案
评论
0/150
提交评论