java生成複雜的巢狀json
阿新 • • 發佈:2019-01-27
在之前並沒有接觸到關於複雜巢狀json資料,都是返回一些簡單的json資料。最近了解到JSONObject和JSONArray的一些知識。
json物件與json物件陣列的轉化關係
var jsonStr = "{\"userId\":\"001\"}"; // json物件字串
var jsonArryStr = "[{\"userId\":\"001\"},{\"userId\":\"002\"}]"; // json陣列字串
var jsonObj = JSON.parse(jsonStr); // 字串轉為json物件
var jsonArry = JSON.parse(jsonArryStr); // 字串轉為json陣列
var jsonStr = JSON.stringify(jsonObj); // json物件轉為字串
var jsonArryStr=JSON.stringify(jsonArry);// json陣列轉為字串
alert(jsonStr);
alert(jsonArryStr);
alert(jsonObj.userId);
alert(jsonArry[0]['userId']);
在這重點講解複雜巢狀json的生成,下面就是我生成的json資料
{“github”:[{“g_name”:”實驗室官網”},{“g_name”:”納新系統”},{“g_name”:”聯絡我們”}],”project”:[{“p_name”:”智慧四旋翼無人機”},{“p_name”:”爪爪智慧寵物掛件”},{“p_name”:”城市停車智慧誘導系統”}],”skills”:[{“address”:”FZ332”,”person”:”張鎮”,”subject”:”正則表示式”,”time”:”2018-02-24 17:33:03.0”},{“address”:”FZ332”,”person”:”成大寶”,”subject”:”查詢演算法”,”time”:”2018-02-22 17:33:07.0”},{“address”:”FZ332”,”person”:”周浩”,”subject”:”哈夫曼樹”,”time”:”2018-02-28 17:12:16.0”}],”status”:0}
看過別人的部落格講述了三中json的生成,自我感覺第二種挺不錯的,是用的Map集合的方式。
/*
* 用Map方式,先將所需要的資料放入map集合中,
* 然後把所有的集合放入List集合
* List集合可以與json互相轉化
*/
Map<String,Object> map=new HashMap<String,Object>();
List<Map> ttmaps=new ArrayList<>();
for(Technology tt:technology) {
//json.put (String.valueOf(tt.getT_id()), tt);
Map<String,Object> tts=new HashMap<String,Object>();
tts.put("subject", tt.getSubject());
tts.put("person", tt.getPerson());
tts.put("address", tt.getAddress());
tts.put("time", tt.getTime());
//System.out.println(tt.getSubject()+" ");
ttmaps.add(tts);
//tts.clear();
}
map.put("skills", ttmaps);
System.out.println("集合中Map建立json物件:" + new JSONObject(map));
try {
ResponseUtil.write(response, new JSONObject(map));
}catch(Exception e) {
e.printStackTrace();
}
下來說其他兩種,是使用字串和bean的方式
/*
首先建立json物件,把需要的欄位放到json中,將所有的json物件新增到
List集合中,最後完成List與json的轉化
*/
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);
}
/*
使用的bean的方式其實和上面的兩種大同小異,只不過使用setter的方式賦值,最後建立生成new JSONObject(actor)
*/
//第三種,也是比較常用的,用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));
}
/*
java bean
*/
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;
}
在理解了別人寫的部落格後,自己能按照思路實現出來,對自己而言也是一種掌握和學習。