一.Jsonjava
1.什麼是Json?json
Json是咱們傳輸數據時用到的一種數據格式。還有其餘的傳輸數據的格式,如 純文本,XML等ide
2.如何構建json數據?ui
(1).使用org.json.JSONObject 構建Json數據。this
/** * 使用JsonObject構建Json數據 */ public static void JsonObject1() { JSONObject jsonObject=new JSONObject(); Object obj=null; try { jsonObject.put("id",1); jsonObject.put("name","小強"); jsonObject.put("age",20); jsonObject.put("major",new java.lang.String[]{"aa","bb"}); jsonObject.put("car",obj); jsonObject.put("isGood",true); System.out.println(jsonObject.toString()); } catch (JSONException e) { e.printStackTrace(); } }
(2).使用Hashmap構建Json數據google
/** * 使用Hashmap構建Json數據 */ public static void JsonObject2(){ Map<String,Object> map=new HashMap<String, Object>(); Object obj=null; map.put("id",1); map.put("name","小強"); map.put("age",20); map.put("major",new String[]{"aa","bb"}); map.put("car",obj); map.put("isGood",true); JSONObject jsonObject=new JSONObject(map);//經過構造方法,把map放進去 System.out.println(jsonObject.toString()); }
(3).javaBean構建json數據spa
咱們有一個JavaBeancode
public class User { private int id;private String name; private int age; private String birthday; private String[] major; private Object car; private boolean have; private Date time; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String[] getMajor() { return major; } public void setMajor(String[] major) { this.major = major; } public Object getCar() { return car; } public void setCar(Object car) { this.car = car; } public boolean isHave() { return have; } public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } public void setHave(boolean have) { this.have = have; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", birthday='" + birthday + '\'' + ", major=" + Arrays.toString(major) + ", car=" + car + ", have=" + have + '}'; } }
/** * javaBean構建json數據 */ public static void JsonObject3(){ User user=new User(); user.setId(1); user.setName("aa"); user.setAge(20); user.setBirthday("2011-2-22"); user.setCar(null); user.setHave(true); user.setMajor(new String[]{"aa","bb"}); JSONObject jsonObject=new JSONObject(user);//經過構造方法把對象放進去 System.out.println(jsonObject); }
3.如何讀取一個Json數據orm
咱們有一個Json格式的數據文件對象
{ "major":["aa","bb"], "isGood":true, "name":"小強", "id":1, "age":20 }
讀取這個文件,並輸出裏面的信息
public static void main(String[] args) throws IOException, JSONException { File file=new File(ReadJsonSample.class.getResource("/user.json").getFile()); String content= FileUtils.readFileToString(file); JSONObject jsonObject=new JSONObject(content); System.out.println(jsonObject.getInt("id")); System.out.println(jsonObject.getString("name")); System.out.println(jsonObject.getInt("age")); }
二.Gson
1.用com.google.gson.Gson構建gson數據
public static void Gson1(){ User user=new User(); user.setId(1); user.setName("aa"); user.setAge(20); user.setBirthday("2011-2-22"); user.setCar(null); user.setHave(true); user.setMajor(new String[]{"aa","bb"}); user.setTime(new Date());
Gson gson=new Gson();
System.out.println(gson.toJson(user));
}
2.優勢
public class User { private int id; @SerializedName("Name") private String name; private transient int age; private String birthday; private String[] major; private Object car; private boolean have; private Date time; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String[] getMajor() { return major; } public void setMajor(String[] major) { this.major = major; } public Object getCar() { return car; } public void setCar(Object car) { this.car = car; } public boolean isHave() { return have; } public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } public void setHave(boolean have) { this.have = have; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", birthday='" + birthday + '\'' + ", major=" + Arrays.toString(major) + ", car=" + car + ", have=" + have + '}'; } }
1.@SerializedName("Name") 加在屬性上,能夠修改屬性在gson數據中的格式
2.使用transient關鍵字時,
private transient int age; 生成json數據時會忽略掉這個屬性
3.能夠格式化數據。
GsonBuilder gsonBuilder=new GsonBuilder();
gsonBuilder.setPrettyPrinting(); 輸出的json數據更美觀。
gsonBuilder.setDateFormat("yyyy-mm-dd"); 提供日期轉換,json只能提供string格式的日期
Gson gson=gsonBuilder.create();
三.自定義返回的Json數據格式
package com.inspire.ssm.common; import lombok.Getter; import lombok.Setter; import java.util.HashMap; import java.util.Map; /** * Created by yaming on 18-2-7. */ @Getter @Setter public class JsonData { private boolean ret; private String msg; private Object data; public JsonData(boolean ret){ this.ret=ret; } public static JsonData success(Object obj,String msg){ JsonData jsonData=new JsonData(true); jsonData.setData(obj); jsonData.setMsg(msg); return jsonData; } public static JsonData success(Object obj){ JsonData jsonData=new JsonData(true); jsonData.setData(obj); return jsonData; } public static JsonData success(){ return new JsonData(true); } public static JsonData fail(String msg){ JsonData jsonData=new JsonData(false); jsonData.setMsg(msg); return jsonData; } public Map<String,Object> toMap(){ Map<String,Object> result=new HashMap<String,Object>(); result.put("ret",ret); result.put("msg",msg); result.put("data",data); return result; } }