赞
踩
最近做项目,需要json格式在服务器之间进行数据传输。但是发现 json 格式数据字段和 java 实体中的变量不对应,需要在后台做二次处理,将数据处理成实体中定义的格式,说白了就是实体类和map数据之间的转换!!!
引入 alibaba 的 fastjson 包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
定义实体类UserHaveJsonField (JSONField注解)
import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; @Data public class UserHasJsonField { @JSONField(name = "USER_NAME") private String name; @JSONField(name = "USER_EMAIL") private String email; @JSONField(name = "DESCRIBE") private String describe; @JSONField(name = "PASS_WORD") private String pwd; }
定义实体类UserNotHaveJsonField
import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; @Data public class UserHasJsonField { @JSONField(name = "USER_NAME") private String name; @JSONField(name = "USER_EMAIL") private String email; private String describe; private String pwd; }
测试代码
import com.alibaba.fastjson.JSONObject; import java.util.HashMap; /** * 测试FastJson中@JSONField注解 * @author YC */ public class TestJsonFiled { public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); map.put("USER_NAME","测试"); map.put("USER_EMAIL","测试123"); map.put("DESCRIBE","测试456"); map.put("PASS_WORD","测试789"); //模拟外部传入的json数据,和实体类的字段并不对应 String jsonString = JSONObject.toJSONString(map); //将json数据转为实体类 User user1 = JSONObject.toJavaObject(JSONObject.parseObject(jsonString), UserHasJsonField.class); System.out.println("实体类数据1"); System.out.println(user1.toString()); //将实体类转为json数据 String jsonStr1 = JSONObject.toJSONString(user) System.out.println("json数据1"); System.out.println(jsonStr1); //将json数据转为实体类 User user2 = JSONObject.toJavaObject(JSONObject.parseObject(jsonString), UserNotHasJsonField.class); System.out.println("实体类数据2"); System.out.println(user2.toString()); //将实体类转为json数据 String jsonStr2 = JSONObject.toJSONString(user) System.out.println("json数据1"); System.out.println(jsonStr2); } } 运行结果 实体类数据1 User(name=测试, email=测试123, describe=测试456, pwd=测试789) json数据1 {"DESCRIBE":"测试456","PASS_WORD":"测试789","USER_EMAIL":"测试123","USER_NAME":"测试"} 实体类数据2 User(name=测试, email=测试123, describe=测试456, pwd=null) json数据2 {"USER_EMAIL":"测试123","USER_NAME":"测试","describe":"测试456"}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。