以前都是根据po生成数据库表,现在越来越多的调用第三方接口去实现自己的业务系统,所以按照第三方的接口规范去实现自己的调用逻辑变成了自己的日常工作,下面介绍如何根据第三方的接口返回的json格式的数据,生成自己对应的业务po类的属性,fastjson提供了很好的支持
importcom.alibaba.fastjson.JSON; importcom.alibaba.fastjson.JSONObject; importcom.alibaba.fastjson.parser.Feature; importjava.math.BigDecimal; importjava.util.Iterator; publicclassTestJson { publicstaticvoidmain(String[] args) throwsException{ Stringjson="{\n"+" \"date\": \"22\",\n"+" \"ymd\": \"2018-09-22\",\n"+" \"age\": 2,\n"+" \"price\": 2365.256,\n"+" \"week\": \"星期六\",\n"+" \"sunrise\": \"05:57\",\n"+" \"high\": \"高温 26.0℃\",\n"+" \"low\": \"低温 15.0℃\",\n"+" \"sunset\": \"18:10\",\n"+" \"aqi\": 55.0,\n"+" \"fx\": \"西北风\",\n"+" \"fl\": \"4-5级\",\n"+" \"type\": \"晴\",\n"+" \"notice\": \"愿你拥有比阳光明媚的心情\"\n"+" }"; JSONObjectjsonObject=JSON.parseObject(json, Feature.OrderedField); //正式提取未知的key值Iterator<String>sIterator=jsonObject.keySet().iterator(); //循环并得到key列表while (sIterator.hasNext()) { // 获得keyStringkey=sIterator.next(); ObjectkeyObject=jsonObject.get(key); if(keyObjectinstanceofString){ System.out.println("private String "+key.substring(0, 1).toLowerCase() +key.substring(1)+";"); }elseif(keyObjectinstanceofNumber){ if(keyObjectinstanceofInteger){ System.out.println("private Integer "+key.substring(0, 1).toLowerCase() +key.substring(1)+";"); }elseif(keyObjectinstanceofBigDecimal){ System.out.println("private BigDecimal "+key.substring(0, 1).toLowerCase() +key.substring(1)+";"); } } } } }
对于po嵌套或者集合类,可以自行扩展,大大提高了工作效率。对于返回的json对应到自己的po中也可以通过反射等小技巧去实现,也节省了不少代码的编写。