背景
在解析第三方接口数据时,发现有的字段数据没有映射到对应的字段上,还有对于有的字段有空格或换行,也会一同存入数据库。
示例
实体类:
public class Goods {
private String id;
private String unit;
private Integer USER_NUM;
private Integer isValid;
private String isDelete;
//...
}
测试方法:
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.nxg.util.dateutils.DateUtils;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;
//省略…
@Test
public void test_json() {
String jtr = “{\n” +
““code”: 0,\n” +
““data”: “[{\“ID\”:\“12\”,\“UNIT\”:\“元\”,\“USER_NUM\”:100,\“IS_VALID\”:2,\“IS_DELETE\”:\“N\”},{\“ID\”:\“13\”,\“UNIT\”:\“次\”,\“USER_NUM\”:100,\“IS_VALID\”:2,\“IS_DELETE\”:\“N\”}]”,\n” +
““message”: “success”\n” +
“}”;
JSONObject entries = JSONUtil.parseObj(jtr);
JSONArray data = JSONUtil.parseArray(entries.get("data"));
List<Goods> goodsList = new ArrayList<>();
data.forEach(item -> {
JSONObject entries1 = JSONUtil.parseObj(item);
Goods bean = JSONUtil.toBean(entries1, Goods.class);
goodsList.add(bean);
});
System.out.println(goodsList);
}
解决方法
方法1:
使用fastjson 解决 (推荐)
方法2:
取出值,再set到实体类中
如果字段太多,就很麻烦,还容易遗漏
方法3
暂时没有