當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
将JSON数据转换成JAVA的实体类
生活随笔
收集整理的這篇文章主要介紹了
将JSON数据转换成JAVA的实体类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
思路:首先將JSON格式的數據轉換成JSONObject,然后將JSONObject轉換成Java的實體類(其中類屬性包括List等類型)
Java實體類:
SearchFilter 類 1 public class SearchFilter {2 private String groupOp;3 4 private List<SearchRule> rules;5 6 public String getGroupOp() {7 return groupOp;8 }9 10 public void setGroupOp(String groupOp) { 11 this.groupOp = groupOp; 12 } 13 14 public List<SearchRule> getRules() { 15 return rules; 16 } 17 18 public void setRules(List<SearchRule> rules) { 19 this.rules = rules; 20 } SearchRule 類: 1 public class SearchRule {2 private String field;3 private String op;4 private String data;5 public String getField() {6 return field;7 }8 public void setField(String field) {9 this.field = field; 10 } 11 public String getOp() { 12 return op; 13 } 14 public void setOp(String op) { 15 this.op = op; 16 } 17 public String getData() { 18 return data; 19 } 20 public void setData(String data) { 21 this.data = data; 22 } 23 24 25 } 1 //導入的package 2 import com.fasterxml.jackson.databind.ObjectMapper; 3 import net.sf.json.JSONArray; 4 import net.sf.json.JSONObject;解析JSon格式字符串的方法
1 public SearchFilter jsonToSearchFilter(String filters) {2 SearchFilter searchFilter = null;3 try {4 JSONObject jsonobject = JSONObject.fromObject(filters);//將json格式的字符串轉換成JSONObject 對象5 JSONArray array = jsonobject.getJSONArray("rules"); //如果json格式的字符串里含有數組格式的屬性,將其轉換成JSONArray,以方便后面轉換成對應的實體6 List<SearchRule> rules = new ArrayList<SearchRule>();7 for (int i = 0; i < array.size(); i++) {8 JSONObject object = (JSONObject) array.get(i); //將array中的數據進行逐條轉換9 SearchRule rule = (SearchRule) JSONObject.toBean(object, SearchRule.class); //通過JSONObject.toBean()方法進行對象間的轉換 10 rules.add(rule); 11 } 12 String groupOp = jsonobject.getString("groupOp"); //簡單的直接獲取值 13 searchFilter = new SearchFilter(); //對SearchFilter對象進行組裝 14 searchFilter.setGroupOp(groupOp); 15 searchFilter.setRules(rules); 16 } catch (Exception e) { 17 System.out.println("filters=" + filters.toString() + ".json轉換成實體類出錯"); 18 e.printStackTrace(); 19 } 20 return searchFilter; 21 }這里只進行了SearchFilter類中list<SearchRule>rule屬性的對象轉換,因為它是一個SearchRule對象數組,需要單獨拿出來進行json轉換成對象,如果直接對filter進行 SearchFilter進行實體轉換會報錯。如果對象中不含有list,array,map等集合,可以像8-9行一樣進行對象轉換。
測試:
1 public static void main(String[] args) { 2 UserMgmtController con = new UserMgmtController(); 3 String filters="{\"groupOp\": \"OR\",\"rules\": [{\"field\": \"realname\",\"op\": \"eq\","+ 4 "\"data\": \"1234\"},{\"field\": \"cityCode\",\"op\": \"ne\",\"data\": \"5678\"}]}"; 5 SearchFilter searchFilter =con.jsonToSearchFilter(filters); 6 System.out.println("gop="+searchFilter.getGroupOp()+" rules.size="+searchFilter.getRules().size()); 7 } 結果:gop=OR rules.size=2 將java對象轉換成json格式: 1 //將Object 對象轉換成 json2 public String objectToJson(Object obj) {3 ObjectMapper mapper = new ObjectMapper();4 // Convert object to JSON string5 String jsonStr = null;6 try {7 jsonStr = mapper.writeValueAsString(obj);8 } catch (IOException e) {9 log.error(obj + "entity 轉換成 json出錯", e); 10 e.printStackTrace(); 11 System.out.println("entity 轉換成 json出錯"); 12 } 13 return jsonStr; 14 }將Object 轉換成json字符串時,默認使用用是的駝峰方式,如果不想使用駝峰則可以增加紅色部分設置,帶下劃線的也可以原樣輸出:
1 public String objectToJson(Object obj){2 ObjectMapper mapper = new ObjectMapper();3 String json =null;4 try {5 PropertyNamingStrategy.PascalCaseStrategy pp = new PropertyNamingStrategy.PascalCaseStrategy(); 6 mapper.setPropertyNamingStrategy(pp);7 json = mapper.writeValueAsString(obj);8 } catch (JsonProcessingException e) {9 log.error("json對象轉換失敗",e); 10 e.printStackTrace(); 11 } 12 return json; 13 }結果:
"UpLoadDateTime":"2017-09-25 10:51:41","OrganizationId":"B3EA5A4D-7C60-4C21-AF09-494890467C34" ,"Test_Code":""來源:https://www.cnblogs.com/smallfa/p/10495508.html
總結
以上是生活随笔為你收集整理的将JSON数据转换成JAVA的实体类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 泡好的黄豆放在冰箱冷冻过后还能不能做豆腐
- 下一篇: 附片要煮多久?