Java中使用 JSON

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



JSON和java之间的映射关系如下:<br />
<table border="1" bordercolor="#337FE5">
    <tbody>
        <tr>
            <th>
                JSON
            </th>
            <th>
                Java
            </th>
        </tr>
    </tbody>
    <tbody>
        <tr>
            <td>
                string
            </td>
            <td>
                java.lang.String
            </td>
        </tr>
        <tr>
            <td>
                number
            </td>
            <td>
                java.lang.Number
            </td>
        </tr>
        <tr>
            <td>
                true | false
            </td>
            <td>
                java.lang.Boolean
            </td>
        </tr>
        <tr>
            <td>
                null
            </td>
            <td>
                null
            </td>
        </tr>
        <tr>
            <td>
                array
            </td>
            <td>
                java.util.List
            </td>
        </tr>
        <tr>
            <td>
                object
            </td>
            <td>
                java.util.Map
            </td>
        </tr>
    </tbody>
</table>

一、将java数据实例化为json

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



<br />
import org.json.simple.JSONObject;
class JsonEncodeDemo
{
    public static void main(String[] args)
    {
        JSONObject obj = new JSONObject();
        obj.put("name", "foo");
        obj.put("num", new Integer(100));
        obj.put("balance", new Double(1000.21));
        obj.put("is_vip", new Boolean(true));
        System.out.print(obj);
    }
}
以上代码执行后,输出结果如下:



<br />
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}

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

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



<br />
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
class JsonDecodeDemo
{
    public static void main(String[] args)
    {
        JSONParser parser=new JSONParser();
        String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
            try{
            Object obj = parser.parse(s);
            JSONArray array = (JSONArray)obj;
            System.out.println("The 2nd element of array");
            System.out.println(array.get(1));
            System.out.println();
            JSONObject obj2 = (JSONObject)array.get(1);
            System.out.println("Field \"1\"");
            System.out.println(obj2.get("1"));
            s = "{}";
            obj = parser.parse(s);
            System.out.println(obj);
            s= "[5,]";
            obj = parser.parse(s);
            System.out.println(obj);
            s= "[5,,2]";
            obj = parser.parse(s);
            System.out.println(obj);
        }catch(ParseException pe){
            System.out.println("position: " + pe.getPosition());
            System.out.println(pe);
        }
    }
}
执行后,输出如下:



<br />
The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]
更详细的用法也可以参考csdn上的博客&nbsp;<a href="https://blog.csdn.net/fireroll/article/details/48708241" target="_blank" rel="noopener">org.json.simple使用详解</a> 。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注