什么是json,javaScript Object Notation是一种javascript轻量级数据交互格式,主要应用于Ajax编程
第一次接触到JSON是在项目中运用EXT中的Ajax和java后台交互的数据格式,当时没怎么在意,因为很简单,用起来顺手,项目也是半路接手就直接拿过来用了,也没怎么注意。现在想想JSON火那也正是这个东西简单上手,而且从他的官方网站也能看的出来他很简单但很实用。http://www.json.org/json-zh.html
JSON只用两种数据格式
1、数组形式
[值1,值2,值3......] JSONArray
2、键值对形式和java中的map很像,当然他们也是可以相互转换的
{key:123,key2:456......} JSONObject
注意的键值对是用“{}”,数组的是“[]”
同时上面两种格式是可以相互嵌套的,比如:
[{name:[123,12,43],sex:[1,0,1]},{name:[123,12,43],sex:[1,0,1]}]等等的格式,在json的官网上有几张图,画出了这几种格式的状况。
下面说说json在java中的用法,在官网上指出了运用json的有和几种方式,比如:org.json,json-lib,JSON Tools,XStream等,我感觉差不多吧,我只用过org.json和json-lib里面主要的方法就是JSONArray和JSONObject。他们中的方法就不细说了,官网上就有API可以去看看就明白了。不过json-lib引入的包要多一点,这个官网上说了要5个包吧
- jakarta commons-lang 2.5
- jakarta commons-beanutils 1.8.0
- jakarta commons-collections 3.2.1
- jakarta commons-logging 1.1.1
- ezmorph 1.0.6
下面简单的写了个例子运用一下json
@Test
public void demo1(){
// 转换数组 到 json格式字符串
String[] arr = {"sada","fdssd","dfsd","sadas"};
JSONArray jsonArray = JSONArray.fromObject(arr);
System.out.println(jsonArray.toString());
}
@Test
public void demo2(){
// 转换list到json
List<Product> products = new ArrayList<Product>();
Product p1 = new Product();
p1.setName("三星手机");
p1.setPrice(3999);
Product p2 = new Product();
p2.setName("联想笔记本");
p2.setPrice(5000);
products.add(p1);
products.add(p2);
JSONArray jsonArray = JSONArray.fromObject(products);
System.out.println(jsonArray);
}
@Test
public void demo3(){
// 转换对象 到 json
Product p1 = new Product();
p1.setName("三星手机");
p1.setPrice(3999);
JSONObject jsonObject = JSONObject.fromObject(p1);
System.out.println(jsonObject);
}
@Test
public void demo4(){
// 通过JSONConfig对象 配置对象哪些属性不参与转换
Product p1 = new Product();
p1.setName("三星手机");
p1.setPrice(3999);
// 不想手机 价格存在 于 结果json中
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[]{"price"});
JSONObject jsonObject = JSONObject.fromObject(p1, jsonConfig);
System.out.println(jsonObject);
}
@Test
public void demo5(){
//转换map到json
Map<String, String> map = new HashMap<String, String>();
map.put("name1", "wangwy");
map.put("name2", "shiqq");
map.put("name3", "liuj");
JSONObject json = JSONObject.fromObject(map);
System.out.println(json);
}
当然项目中我们用的比这个要复杂的多,有时候需要我们手动去拼写json串,只要牢记json的两种书写格式就可以了。