JSON是一種輕量級的數據交換格式,由JavaScript語言中的對象字面量語法衍生而來。在最初的設計中,JSON只是一種語言無關的數據格式,但是隨著JavaScript的廣泛應用,JSON成為了一種常用的數據格式。
JSON是由鍵值對組成的,鍵和值之間用冒號(:)分隔,每個鍵值對之間用逗號(,)分隔,首尾用花括號({})包裹。JSON數據類型除了字符串、數字、布爾、null外,還包括對象與數組兩種類型。
Java中可使用class json來定義JSON對象,其內部結構與JSON格式相同。以下是一個JSON對象的示例:
{ "name": "Tom", "age": 25, "gender": "male", "hobbies": ["reading", "traveling", "swimming"], "address": { "province": "Guangdong", "city": "Shenzhen", "district": "Nanshan" } }
在Java中,可以使用class json來解析或生成JSON數據,JSON數據生成示例如下:
JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "Tom"); jsonObject.put("age", 25); jsonObject.put("gender", "male"); JSONArray jsonArray = new JSONArray(); jsonArray.put("reading"); jsonArray.put("traveling"); jsonArray.put("swimming"); jsonObject.put("hobbies", jsonArray); JSONObject address = new JSONObject(); address.put("province", "Guangdong"); address.put("city", "Shenzhen"); address.put("district", "Nanshan"); jsonObject.put("address", address); String jsonString = jsonObject.toString();
上述代碼將生成跟前面示例中相同結構的JSON對象。JSON數據解析則可以使用JSONArray和JSONObject來分別獲取數組和對象類型數據。例如:
JSONObject jsonObject = new JSONObject("{"name":"Tom","age":25,"gender":"male","hobbies":["reading","traveling","swimming"],"address":{"province":"Guangdong","city":"Shenzhen","district":"Nanshan"}}"); String name = jsonObject.getString("name"); int age = jsonObject.getInt("age"); JSONArray hobbies = jsonObject.getJSONArray("hobbies"); for (int i = 0; i< hobbies.length(); i++) { System.out.println(hobbies.getString(i)); }
上述代碼將首先將JSON字符串解析為JSONObject類型,然后獲取其中的字段值。