什么是JSON?
1.介绍:JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换格式。
2.一种轻量级的数据交换格式
3.轻量级是跟xml做比较。json也可以用来保存数据,并且相同的数据使用json保存会比xml保存经小很多,而且解析速度要快很多。
客户端使用json
服务器使用json
传数据用json格式
Json在JavaScript中的使用。
json的定义
json是由键值对组成,并且由大括号包围,每个键都必须加引号引起来,键和值之间使用冒号进行分隔。
多组键值对之间使用逗号进行分隔。
json的访问
var 变量名 = {
“key”:值 , 值可以有很多种类型,number、string,json对象,比较数组,比较json数组
“key1”:值
};
如何访问json对象:
变量名.key
<script type="text/javascript"> // json的定义 var jsonObj = { "key1" : 12, // number "key2" : "abc", // string "key3" : [33,"333",true], // 数组 "key4" : { // json套json "key4_1" : 41, "key4_2" : "42String" }, "key5" : [{ "key5_1_1" : 511, "key5_1_2" : 512 },{ "key5_2_1" : 521, "key5_2_2" : 522 }] }; // json的访问 // alert( jsonObj.key1 );//12 // alert( jsonObj.key2 );//abc // alert( jsonObj.key3[0] );//33 // alert( jsonObj.key4.key4_2 );//42String // alert( jsonObj.key5[1].key5_2_2 );//522 // alert( jsonObj ); // json对象转字符串 var jsonString = JSON.stringify( jsonObj ); alert(jsonString); /* {"key1":12,"key2":"abc","key3":[33,"333",true], "key4":{"key4_1":41,"key4_2":"42String"}, "key5":[{"key5_1_1":511,"key5_1_2":512}, {"key5_2_1":521,"key5_2_2":522}]} */ // json字符串转json对象 var obj = JSON.parse( jsonString ); alert(obj.key1); </script>
Json的两个常用方法
JSON.stringify() : 把json对象转换成为json字符串
JSON.parse() : 把json字符串转换成为json对象
Json在java中的使用
在java中使用json,需要先导入jar包。gson-2.2.4.jar
javaBean和json的互转
///
@Test public void test1() throws Exception { Person person = new Person(1,"国哥很帅!"); // 是谷歌jar包提供用来操作json的工具类 Gson gson = new Gson(); // 把person对象转换成为json字符串 String jsonString = gson.toJson(person); System.out.println( jsonString ); // 把json字符串转换成为javaBean对象 Person person1 = gson.fromJson(jsonString, Person.class); System.out.println( person1 ); }
List 和json的互转
@Test public void test2() throws Exception { List<Person> list = new ArrayList<Person>(); list.add(new Person(1, "哥帅一次")); list.add(new Person(2, "哥帅二次")); list.add(new Person(3, "哥帅三次")); // 创建一个json的工具类 Gson gson = new Gson(); // 把list集合转换成为json字符串 String listJsonString = gson.toJson(list); System.out.println( listJsonString ); // List<Person> list2 = gson.fromJson(listJsonString, new PersonListType().getType()); List<Person> list2 = gson.fromJson(listJsonString, new TypeToken<ArrayList<Person>>() {}.getType()); System.out.println( list2 ); Person person = list2.get(0); System.out.println(person); }
map 和json的互转
@Test public void test3() throws Exception { Map<String, Person> map = new HashMap<String, Person>(); map.put("p1", new Person(1, "飞龙")); map.put("p2", new Person(2, "哥很帅气,我爱你!")); map.put("p3", new Person(3, "哥94V587")); Gson gson = new Gson(); // 把集合转换json字符串 String mapJsonString = gson.toJson(map); System.out.println( mapJsonString ); // fromJson方法,如果要返回一个javaBean对象。返回Class类型 // 如果要返回一个集合,要使用TypeToken类 Map<String, Person> map2 = gson.fromJson(mapJsonString, new TypeToken<HashMap<String, Person>>(){}.getType()); System.out.println( map2 ); Person p = map2.get("p2"); System.out.println(p); }
案例:
@Test public void test() { Person person = new Person(1,"很帅"); System.out.println("person:"+person); Gson gson = new Gson(); String json = gson.toJson(person);//person类转json System.out.println("person转json:"+json); Person person2 = gson.fromJson(json, Person.class);//json转Bean对象 System.out.println("json转Person"+person2); List<Person> list = new ArrayList<Person>(); list.add(new Person(1, "哥帅一次")); list.add(new Person(2, "哥帅二次")); list.add(new Person(3, "哥帅三次")); System.out.println("list集合:"+list); String gson2 = gson.toJson(list);//集合转json System.out.println("list集合转json:"+gson2); Map<String, Person> map = new HashMap<String, Person>(); map.put("p1", new Person(1, "龙")); map.put("p2", new Person(2, "哥很帅气,我爱你!")); map.put("p3", new Person(3, "哥94V587")); System.out.println("map集合:"+map); String gString = gson.toJson(map);//集合转json System.out.println("Map集合转json:"+gString); Map<String, Person> map2 = gson.fromJson(gString,new TypeToken<HashMap<String, Person>>(){}.getType());//json转Bean System.out.println("json转map:"+map2); }
结果:
person:Person [id=1, name=很帅] person转json:{"id":1,"name":"很帅"} json转PersonPerson [id=1, name=很帅] list集合:[Person [id=1, name=哥帅一次], Person [id=2, name=哥帅二次], Person [id=3, name=哥帅三次]] list集合转json:[{"id":1,"name":"哥帅一次"},{"id":2,"name":"哥帅二次"},{"id":3,"name":"哥帅三次"}] map集合:{p1=Person [id=1, name=龙], p2=Person [id=2, name=哥很帅气,我爱你!], p3=Person [id=3, name=哥94V587]} Map集合转json:{"p1":{"id":1,"name":"龙"},"p2":{"id":2,"name":"哥很帅气,我爱你!"},"p3":{"id":3,"name":"哥94V587"}} json转map:{p1=Person [id=1, name=龙], p2=Person [id=2, name=哥很帅气,我爱你!], p3=Person [id=3, name=哥94V587]}