json入门教程+在java中的一些便捷操作

发布时间:2017-3-31 0:28:29 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"json入门教程+在java中的一些便捷操作",主要涉及到json入门教程+在java中的一些便捷操作方面的内容,对于json入门教程+在java中的一些便捷操作感兴趣的同学可以参考一下。

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript的交互。相比XML,他更易于人阅读和编写,它是JavaScript的一个子集。 JSON采用完全独立于语言的文本格式,可以在流行的语言中使用,比如C# Java C++ VB。这些特性使JSON成为理想的数据交换语言。 一、Json的构建结构    1. “键/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)。 2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。 这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。 二、JSon具体表现形式 1、对象是一个无序的“‘键/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。         2、数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。       3、值(value)可以是双引号括起来的字符(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。     4、字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。 一个字符(character)即一个单独的字符串(character string)。字符串(string)与C或者Java的字符串非常相似。     5、数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。     在javascript中 [javascript] view plaincopyprint? <script type="text/javascript">      var json = "{name:'jack', age:20, city:{address:'北京市',street:'朝阳区'}}";      alert(json.name);      alert(json.age);      alert(json.city.address + json.city.street);  </script>  大家可以自己试试看! 三、JSon在Java中应用 废话不说直接上代码!!这里我用的Junit做的测试,如果不懂的童鞋可以学习一下,我的演示相对简单。 [java]  package com.jelly.json.test;    import static org.junit.Assert.assertEquals;    import java.util.ArrayList;  import java.util.Date;  import java.util.HashMap;  import java.util.List;  import java.util.Map;    import net.sf.ezmorph.object.DateMorpher;  import net.sf.json.JSONArray;  import net.sf.json.JSONObject;  import net.sf.json.util.JSONUtils;    import org.apache.commons.beanutils.PropertyUtils;  import org.junit.Test;    import com.jelly.json.entity.MyBean;  import com.jelly.json.entity.Person;  import com.jelly.json.entity.Student;    @SuppressWarnings("unchecked")  public class JsonTest {            private static void setDataFormat2JAVA(){          //设定日期转换格式          JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] {"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"}));      }             //json转成Object      @Test      public void testJsonToObj(){          String json = "{id:'1001',name:'张三',age:22}";          Student stu = null;          setDataFormat2JAVA();          JSONObject obj = JSONObject.fromObject(json);          stu = (Student)JSONObject.toBean(obj, Student.class);          System.out.println(stu);      }            //从一个JSON数组得到一个java对象数组      @Test      public void testJsonArrToArray(){          String jsonStus = "[{id:1,name:'jack',age:20},{id:2,name:'rose',age:20},{id:3,name:'admin',age:20}]";          JSONArray array = JSONArray.fromObject(jsonStus);          Student[] stu = new Student[array.size()];          for(int i = 0; i < array.size(); i++){              JSONObject jsonObject = array.getJSONObject(i);              stu[i] = (Student)JSONObject.toBean(jsonObject, Student.class);          }          System.out.println(stu[0]);          System.out.println(stu[1]);          System.out.println(stu[2]);          //System.out.println(stu[3]);   会报错      }            //从一个JSON数组得到一个java集合      @Test      public void testJsonArrToList(){          String jsonStus = "[{id:1,name:'jack',age:20},{id:2,name:'rose',age:20},{id:3,name:'admin',age:20}]";          JSONArray array = JSONArray.fromObject(jsonStus);          List<Student> stu = new ArrayList<Student>();          for(int i = 0; i < array.size(); i++){              JSONObject jsonObject = array.getJSONObject(i);              stu.add((Student)JSONObject.toBean(jsonObject, Student.class));          }          System.out.println(stu.get(0));          System.out.println(stu.get(1));          System.out.println(stu.get(2));      }      //从json数组中得到相应java数组       @Test      public void testArrayForJson(){          String jsonString = "['q','c','d']";          JSONArray jsonArray = JSONArray.fromObject(jsonString);          Object[] strs = jsonArray.toArray();          System.out.print(strs[0]);          System.out.print(strs[1]);          System.out.print(strs[2]);      }            //字符串转换成json      @Test      public void testJsonStrToJSON(){          String json = "['json','is','easy']";          JSONArray jsonArray = JSONArray.fromObject( json );            System.out.println( jsonArray );            // prints ["json","is","easy"]        }            //Map转换成json      @Test      public void testMapToJSON(){          Map map = new HashMap();            map.put( "name", "jack" );            map.put( "bool", Boolean.TRUE );            map.put( "int", new Integer(1) );            map.put( "arr", new String[]{"a","b"} );            map.put( "func", "function(i){ return this.arr[i]; }" );                      JSONObject jsonObject = JSONObject.fromObject( map );            System.out.println( jsonObject );      }            //java对象转换为json格式      @Test      public void testObjToJson(){          JSONObject obj2=new JSONObject();          obj2.put("phone","123456");          obj2.put("zip","7890");          obj2.put("contact",obj2);          System.out.print(obj2);      }            //复合类型bean转成成json      @Test      public void testBeadToJSON(){          MyBean bean = new MyBean();          bean.setId("001");          bean.setName("银行卡");          bean.setDate(new Date());                    List cardNum = new ArrayList();          cardNum.add("农行");          cardNum.add("工行");          cardNum.add("建行");          cardNum.add(new Person("test"));                    bean.setCardNum(cardNum);                    JSONObject jsonObject = JSONObject.fromObject(bean);          System.out.println(jsonObject);                }            //一般数组转换成JSON      @Test      public void testArrayToJSON(){          boolean[] boolArray = new boolean[]{true,false,true};            JSONArray jsonArray = JSONArray.fromObject( boolArray );            System.out.println( jsonArray );        }            //Collection对象转换成JSON      @Test      public void testListToJSON(){          List list = new ArrayList();            list.add( "first" );          list.add( "second" );          JSONArray jsonArray = JSONArray.fromObject( list );            System.out.println( jsonArray );            // prints ["first","second"]        }            //普通类型的json转换成对象      @Test      public void testJsonToObject() throws Exception{          String json = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";            JSONObject jsonObject = JSONObject.fromObject( json );           System.out.println(jsonObject);          Object bean = JSONObject.toBean( jsonObject );           assertEquals( jsonObject.get( "name" ), PropertyUtils.getProperty( bean, "name" ) );            assertEquals( jsonObject.get( "bool" ), PropertyUtils.getProperty( bean, "bool" ) );            assertEquals( jsonObject.get( "int" ), PropertyUtils.getProperty( bean, "int" ) );            assertEquals( jsonObject.get( "double" ), PropertyUtils.getProperty( bean, "double" ) );            assertEquals( jsonObject.get( "func" ), PropertyUtils.getProperty( bean, "func" ) );            System.out.println(PropertyUtils.getProperty(bean, "name"));          System.out.println(PropertyUtils.getProperty(bean, "bool"));          System.out.println(PropertyUtils.getProperty(bean, "int"));          System.out.println(PropertyUtils.getProperty(bean, "double"));          System.out.println(PropertyUtils.getProperty(bean, "func"));          System.out.println(PropertyUtils.getProperty(bean, "array"));                    List arrayList = (List)JSONArray.toCollection(jsonObject.getJSONArray("array"));          for(Object object : arrayList){  www.2cto.com             System.out.println(object);          }                }        }  这是项目目录结构    注意:  1,另外补充一点,经常遇到的一个异常问题~~ 当你直接用javascript直接操作json时,你会发现有的浏览器下,显示不出来~~~这是因为javascript1.2以上的版本才支持,所以有的浏览器支持的版本过低,导致显示不出来!!! 这是切换一下较高版本的浏览器即可~~~~ ,2,还有些时候,我从服务器获取返回的json数据,直接用var变量接受后,不能访问里面的属性,如:text.name 所以这时候需要将接收到的json转换成js对象~~代码如下:   var t= eval('('+text+')') ; 转换后就可以用t.name了~~~    

上一篇:计算机原理学习(4)-- 操作系统发展和程序编译
下一篇:人物分析第二集

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款