1.json簡單介紹
1.1 json是最受歡迎且廣泛通用的資料傳輸格式,簡稱JavaScript Object Notation,最早在JavaScript中使用.
1.2 舉個例,下面是一個json物件,名字叫王尼瑪,他有兩個粉絲組成數組,一個叫小王,一個叫小尼瑪:
{ "name":"王尼玛", "fans":[{ "name":"小王", "age":"7" },{ "name":"小尼玛", "age":"10" }] }
2.json資料產生和解析
2.1 關於json處理的包有好幾類,開源jackson,谷歌Gson,阿里巴巴的Fastjson.Gson功能強大,但是Fastjson性能更快.如何選擇見仁見智就行
# 2.2 這裡開始都是我開始都是用org.json,後面為了演示複雜json轉java bean又導入了功能強大的Gjson,先附上兩個maven依賴:
<!-- https://mvnrepository.com/artifact/org.json/json --> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20160810</version> </dependency> <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.7</version> </dependency>
2.3 json數據的生成,也就是各種類型轉json. (String,map和java bean)
DemoCreateJson.java
import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by garfield on 2016/10/16. * 举三种创建json的例子 */ public class DemoCreateJson { public static void main(String[] args) { StringCreateJson(); mapCreateJson(); beanCreateJson(); } //String创建json /** * { "name":"王尼玛", "fans":[{ "name":"小王", "age":"7" },{ "name":"小尼玛", "age":"10" }] } */ static void StringCreateJson(){ JSONObject jsonObject = new JSONObject(); jsonObject.put("name","王尼玛"); //粉丝是个数组,其实就是嵌套json JSONObject jsonObject1 = new JSONObject(); jsonObject1.put("name","小王"); jsonObject1.put("age",7); JSONObject jsonObject2 = new JSONObject(); jsonObject2.put("name","小尼玛"); jsonObject2.put("age",10); //从此处可以看出其实list和json也是互相转换的 List<JSONObject> jsonObjects = new ArrayList<JSONObject>(); jsonObjects.add(jsonObject1); jsonObjects.add(jsonObject2); jsonObject.put("fans",jsonObjects); System.out.println("jsonObject直接创建json:" + jsonObject); } //第二种方法,用map方式 static void mapCreateJson(){ Map<String,Object> map = new HashMap<String,Object>(); map.put("name","王尼玛"); Map<String,Object> map1 = new HashMap<String,Object>(); map1.put("name","小王"); map1.put("age",7); Map<String,Object> map2 = new HashMap<String,Object>(); map2.put("name","小尼玛"); map2.put("age",10); List<Map> jsonObjects = new ArrayList<Map>(); jsonObjects.add(map1); jsonObjects.add(map2); map.put("fans",jsonObjects); System.out.println("集合中Map创建json对象:" + new JSONObject(map)); } //第三种,也是比较常用的,用bean转换,(这里用的是map作为子json,如果必须要创建复杂bean对象,建议用Gjson操作) static void beanCreateJson(){ Actor actor = new Actor(); actor.setName("王尼玛"); Map<String,Object> map1 = new HashMap<String,Object>(); map1.put("name","小王"); map1.put("age",7); Map<String,Object> map2 = new HashMap<String,Object>(); map2.put("name","小尼玛"); map2.put("age",10); List<Map> maps = new ArrayList<Map>(); maps.add(map1); maps.add(map2); actor.setFans(maps); System.out.println("java bean创建json对象:" + new JSONObject(actor)); } }
2.3.1上面類別缺少基本bean
Actor.java##
import java.util.List; import java.util.Map; /** * Created by garfield on 2016/10/16. */ public class Actor { private String name; private List<Map> fans; public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Map> getFans() { return fans; } public void setFans(List<Map> fans) { this.fans = fans; } }
Actor.java##
import com.google.gson.*; import org.json.JSONObject; import java.util.Map; /** * Created by garfield on 2016/10/16. */ public class DemoParseJson { public static void main(String[] args) { String jsonString = "{\"fans\":[{\"name\":\"小王\",\"age\":7},{\"name\":\"小尼玛\",\"age\":10}],\"name\":\"王尼玛\"}"; normalParse(jsonString); beanParse(jsonString); } static void normalParse(String jsonString){ JSONObject jsonObject = new JSONObject(jsonString); //获取普通属性 System.out.println("姓名:"); System.out.println(" " + jsonObject.getString("name")); //获取数组 System.out.println("粉丝:"); for (Object fan : jsonObject.getJSONArray("fans")) { JSONObject object = (JSONObject)fan; System.out.println(" 姓名:" + object.get("name") + ",年龄:" + object.get("age")); } } //org.json并不支持这种复杂的bean转换,所以这边又导入了gson的包 static void beanParse(String jsonString){ System.out.println("=========Gson解析========="); JsonObject obj = new JsonParser().parse(jsonString).getAsJsonObject(); Actor actor = new Gson().fromJson(obj,Actor.class); System.out.println("姓名:"); System.out.println(" " + obj.get("name")); System.out.println("粉丝:"); for (Map map : actor.getFans()) { System.out.println(" 姓名:" + map.get("name") + "年龄:" + map.get("age")); } } }
#DemoParseJson.java
姓名: 王尼玛 粉丝: 姓名:小王,年龄:7 姓名:小尼玛,年龄:10 =========Gson解析========= 姓名: "王尼玛" 粉丝: 姓名:小王年龄7.0 姓名:小尼玛年龄10.0
2.4.1順便附上執行結果:
rrreee相關文章:
詳細介紹java中fastjson產生和解析json資料(序列化和反序列化資料)
相關影片:
以上是JAVA產生和解析帶括號的json資料及其簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!