Ajax(三) — json 数据格式
为什么,学习json? 现在异构系统之间消息传递大多数的使用的都是json格式 比如 WebService 基于XML,因为要遵循多种约束,所以传递数据比较麻烦,而且在高并发的情况下,传递数据很慢。而阿里的 Dubbo 分布式服务框架(仅限于Java平台使用)的效率就非常非常高
JSON(JavaScriptObject Notation)一种简单的数据格式,比xml更轻巧。JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。 JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。 规则如下: 1)映射用冒号(“:”)表示。名称:值 2)并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2 3) 映射的集合(对象)用大括号(“{}”)表示。{名称1:值1,名称2:值2} 4) 并列数据的集合(数组)用方括号(“[]”)表示。 [ {名称1:值,名称2:值2},{名称1:值,名称2:值2}] 5)元素值可具有的类型:string,number,object,array,true,false,null
/** * json中的value可以是: * 数字类型,字符串类型,json,[],function */ var json1 = {}; var json2 = { //key:value name:'aaa',id:1,aaa:function(){ alert("adsf"); } }; var json3 = {//key:value(value又是一个json) person:{ id:1,name:'aa' } }; //json数组 var json4 = [ { id:1,name:'aaa' },{ id:2,name:'bbb' } ]; var json5 = { setPerson:function(){ //key:value(一个函数) } }; var json6 = {//key:json引用 aaa:json4 }; /** * 遍历json */ for(var i in json2){ /** * i代表key值 */ alert(i); /** * json2[i]代表value值 */ if(typeof json2[i] == "function"){//如果 value是一个function json2[i]();//调用该方法 }else{ alert(json2[i]); } } //查找json中的key,value的一种形式 alert("-------------"+json2["name"]); //利用该方式可以给一个json动态的加入 key:value json2['asdf'] = 1; alert(json2['asdf']); /** * 所以说json的写法非常灵活,只要能解析,就能传递 */ 解析JSON JSON 只是一种文本字符串。它被存储在 responseText属性中 为了读取存储在 responseText 属性中的 JSON 数据,需要根据 JavaScript 的 eval 语句。函数 eval 会把一个字符串当作它的参数。然后这个字符串会被当作 JavaScript 代码来执行。因为 JSON 的字符串就是由 JavaScript代码构成的,所以它本身是可执行的 json优点: 作为一种数据传输格式,JSON 与XML 很相似,但是它更加灵巧。 JSON 不需要从服务器端发送含有特定内容类型的首部信息。 缺点: 语法过于严谨 代码不易读 Json对象与Java对象之间的相互转换(两种方式) 一、Jackson Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换 public class JackJsonTest { /** * bean 转化 json 字符串 * @throws Exception */ @Test public void testBean2Json() throws Exception { User user = new User(); user.setDescription("desc1"); user.setId(1L); user.setName("name1"); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writeValueAsString(user); System.out.println(jsonStr); //writeValue和writeObject有相同的功能 mapper.writeValue(System.out,user); } }要导入所需 jackson-annotations-2.4.0.jar 二、如果要将数组、对象、Map、List转换成JSON数据,那我们需要一些jar包: json-lib-2.4-jdk15.jar @Test public void test2(){ //将数组转换为JSON: String[] arr = {"asd","dfgd","asd","234"}; JSONArray jsonarray = JSONArray.fromObject(arr); System.out.println(jsonarray); //对象转换成JSON: User user = new User(1001,"张三"); JSONArray jsonArray = JSONArray.fromObject(user); System.out.println( jsonArray ); //把Map转换成json, 要使用jsonObject对象: Map<String,Object> map = new HashMap<String,Object>(); map.put("id",1001); map.put("userName","张三"); JSONObject jsonObject = JSONObject.fromObject(map); System.out.println(jsonObject); //把List转换成JSON数据: List<User> list = new ArrayList<User>(); User user = new User(1001,"张三"); list.add(user); list.add(user); list.add(user); JSONArray jsonArray = JSONArray.fromObject(list); System.out.println(jsonArray); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- [寒江孤叶丶的Cocos2d-x之旅_27]CocoStudio导出的LUA文件怎
- swift – 覆盖一个计算属性,该属性返回一个Optional值,返回
- ruby – 如何将正则表达式分成多行?
- ASPNET缓存依赖
- c – “sys / mman.h:没有这样的文件或目录”
- ruby-on-rails – 需要使用Ruby的RSpec中的lib,1.9.2带来“
- ruby-on-rails – 如何在cookie rails 4上存储数组?
- AS3应用程序模块化开发与ApplicationDomain
- socket多人聊天程序C语言版(一)
- xcode – 我可以找到主动登录的GameCenter用户名吗?