虽然JAVA是相当流行的编程语言,但做为运维人员,基本很少用JAVA语言,不过近期因为某对接项目开发厂商使用JAVA开发的,在某些数据对接时,给提提到使用的数据类型为JSON,半天讲不明白,没办法,自己用临时学到的蹩脚JAVA写了一个处理json的demo。这里使用到的json模块为 JSON.simple 。它完全兼容JSON的标准(RFC4627),可以用JSON.simple来编码或解码JSON文本。

JSON和java之间的映射关系如下:

JSON Java
string java.lang.String
number java.lang.Number
true | false java.lang.Boolean
null null
array java.util.List
object java.util.Map

一、将java数据实例化为json

使用 java.util.HashMap 的子类 JSONObject 编码一个 JSON 对象。这里并没有提供顺序。如果你需要严格的元素顺序,请使用 JSONValue.toJSONString(map) 方法的有序映射实现,具体代码如下:

 1import org.json.simple.JSONObject;
 2class JsonEncodeDemo
 3{
 4    public static void main(String[] args)
 5    {
 6        JSONObject obj = new JSONObject();
 7        obj.put("name", "foo");
 8        obj.put("num", new Integer(100));
 9        obj.put("balance", new Double(1000.21));
10        obj.put("is_vip", new Boolean(true));
11        System.out.print(obj);
12    }
13}

以上代码执行后,输出结果如下:

1{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}

二、解析JSON数据为java数据类型

这里使用了 JSONObject 和 JSONArray,其中 JSONObject 就是 java.util.Map,JSONArray 就是 java.util.List,因此我们可以使用 Map 或 List 的标准操作访问它们:

 1import org.json.simple.JSONObject;
 2import org.json.simple.JSONArray;
 3import org.json.simple.parser.ParseException;
 4import org.json.simple.parser.JSONParser;
 5class JsonDecodeDemo
 6{
 7    public static void main(String[] args)
 8    {
 9        JSONParser parser=new JSONParser();
10        String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
11            try{
12            Object obj = parser.parse(s);
13            JSONArray array = (JSONArray)obj;
14            System.out.println("The 2nd element of array");
15            System.out.println(array.get(1));
16            System.out.println();
17            JSONObject obj2 = (JSONObject)array.get(1);
18            System.out.println("Field \"1\"");
19            System.out.println(obj2.get("1"));
20            s = "{}";
21            obj = parser.parse(s);
22            System.out.println(obj);
23            s= "[5,]";
24            obj = parser.parse(s);
25            System.out.println(obj);
26            s= "[5,,2]";
27            obj = parser.parse(s);
28            System.out.println(obj);
29        }catch(ParseException pe){
30            System.out.println("position: " + pe.getPosition());
31            System.out.println(pe);
32        }
33    }
34}

执行后,输出如下:

1The 2nd element of array
2{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
3Field "1"
4{"2":{"3":{"4":[5,{"6":7}]}}}
5{}
6[5]
7[5,2]

更详细的用法也可以参考csdn上的博客 org.json.simple使用详解