使用GSON將json文件轉換成對象或者集合

第1種狀況的json文件

{"name":"狩獵者",
"age":['aa','bb','cc'],
"tel":"13957809999",
"address":"中國湖南衡陽"}
第2種狀況的json文件

[{"name":"狩獵者",
"age":['aa','bb','cc'],
"tel":"13957809999",
"address":"中國湖南衡陽"},
{"name":"飛魚",
"age":['aa','bb','cc'],
"tel":"13957808888",
"address":"中國浙江寧波"}]

對應的pojo類java

public class Person {
    private String name;
    private String[] age;
    private String tel;
    private String address;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String[] getAge() {
        return age;
    }
    public void setAge(String[] age) {
        this.age = age;
    }
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + Arrays.toString(age)
                + ", tel=" + tel + ", address=" + address + "]";
    }
}
public class JsonFileToObject {
	
	 public static <T> T  transferObject(String filePath,T obj){
		  File file=new File(filePath);
		  StringBuffer sb = new StringBuffer() ;
		  JsonParser jsonParser=new JsonParser();
		  Gson gson = new Gson();
		  String line;
		  BufferedReader br=null;
		  try {
			br=new BufferedReader(new FileReader(file));
			  while((line=br.readLine())!=null){
				  sb.append(line);
			  }
		  } catch (FileNotFoundException e) {
			  e.printStackTrace();
		  } catch (IOException e) {
			  e.printStackTrace();
		  }
		  
		  String json=sb.toString();
		  JsonElement jsonElement=jsonParser.parse(json);  
		  json = jsonElement.toString();
		  @SuppressWarnings("unchecked")
		  T transferObj = (T) gson.fromJson(json, obj.getClass());
		  return transferObj;
	 }
	 
	 public  static <T> List<T> transferList(String filePath,T obj){
		 File file=new File(filePath);
		 StringBuffer sb = new StringBuffer() ;
		 JsonParser jsonParser=new JsonParser();
		 List<T> objs=new ArrayList<T>();
		 Gson gson = new Gson();
		 String line;
		 BufferedReader br=null;
		 try {
			 br=new BufferedReader(new FileReader(file));
			 while((line=br.readLine())!=null){
				 sb.append(line);
			 }
		 } catch (FileNotFoundException e) {
			 e.printStackTrace();
		 } catch (IOException e) {
			 e.printStackTrace();
		 }
		 String json=sb.toString();
		 JsonElement jsonElement=jsonParser.parse(json);  
		 JsonArray jsonArray=jsonElement.getAsJsonArray();  
		 Iterator<JsonElement> it=jsonArray.iterator();  
		  while(it.hasNext()){ 
		   jsonElement=it.next();
		   json=jsonElement.toString();  
		   @SuppressWarnings("unchecked")
		   T transferObj = (T) gson.fromJson(json, obj.getClass());
		   objs.add(transferObj);  
		  }
		  return objs; 
		  
	 }
}
相關文章
相關標籤/搜索