在後端日常開發中總會有各種各樣的匯出需求,實現這個需求必須要解決的兩個問題:
1、表頭不能直接使用欄位名,需要顯示為中文,甚至還需要考慮國際化
2、值需要翻譯,比如性別、狀態之類的欄位
現在主流寫的比較好的方法是定義一個物件,物件上用自定義的註解+easytrans
1、解決表頭與欄位的對映
2、表頭加#進行後續split,解決翻譯問題
{ "parkls": { "parkname": "停車場", "carno": "車牌號", "intime": "進場時間", "outtime": "出場時間", "paytime": "支付時間", "parktime": "停車時長(單位:分鐘)", "amt":"支付金額(單位:元)", "paytype":"支付方式#paytype", "paystatus":"支付狀態#paystatus", "isrecharge":"是否重新計費#YN", "ismonthcard":"是否月卡抵扣#YN" } }
{ "YN": { "Y": "是", "N": "否" }, "paystatus": { "0": "待支付", "1": "已支付", "2": "已過期" }, "paytype":{ "0": "微信支付", "1": "月卡支付", "2": "現金", "3":"餘額" } }
package com.xf.tools; import java.io.File; import java.io.FileNotFoundException; import java.net.URL; import java.nio.charset.Charset; import cn.hutool.core.io.FileUtil; import cn.hutool.json.JSONConfig; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import lombok.val; public class ExcelDeal { public static JSONObject head; public static JSONObject trans; public synchronized static void load() throws FileNotFoundException { URL url = ClassLoader.getSystemResource("exporthead.json"); // head = JSONUtil.readJSONObject(new File(url.getPath()), Charset.forName("utf-8")); String jsonstr = FileUtil.readString(new File(url.getPath()), Charset.forName("utf-8")); val config = JSONConfig.create().setOrder(true); head = JSONUtil.parseObj(jsonstr, config); url = ClassLoader.getSystemResource("trans.json"); // trans = JSONUtil.readJSONObject(new File(url.getPath()), Charset.forName("utf-8")); jsonstr = FileUtil.readString(new File(url.getPath()), Charset.forName("utf-8")); trans = JSONUtil.parseObj(jsonstr, config); } }
這個方法我就不上了,留點大家發揮的空間。
主要是分享下自已的思路,歡迎大家交流。