JSON是一種輕量級的數(shù)據(jù)交換格式,由JavaScript語言中的對象字面量語法衍生而來。在最初的設(shè)計(jì)中,JSON只是一種語言無關(guān)的數(shù)據(jù)格式,但是隨著JavaScript的廣泛應(yīng)用,JSON成為了一種常用的數(shù)據(jù)格式。
JSON是由鍵值對組成的,鍵和值之間用冒號(:)分隔,每個(gè)鍵值對之間用逗號(,)分隔,首尾用花括號({})包裹。JSON數(shù)據(jù)類型除了字符串、數(shù)字、布爾、null外,還包括對象與數(shù)組兩種類型。
Java中可使用class json來定義JSON對象,其內(nèi)部結(jié)構(gòu)與JSON格式相同。以下是一個(gè)JSON對象的示例:
{ "name": "Tom", "age": 25, "gender": "male", "hobbies": ["reading", "traveling", "swimming"], "address": { "province": "Guangdong", "city": "Shenzhen", "district": "Nanshan" } }
在Java中,可以使用class json來解析或生成JSON數(shù)據(jù),JSON數(shù)據(jù)生成示例如下:
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();
上述代碼將生成跟前面示例中相同結(jié)構(gòu)的JSON對象。JSON數(shù)據(jù)解析則可以使用JSONArray和JSONObject來分別獲取數(shù)組和對象類型數(shù)據(jù)。例如:
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類型,然后獲取其中的字段值。