• 转:将JSON数据转换成JAVA的实体类


    思路:首先将JSON格式的数据转换成JSONObject,然后将JSONObject转换成Java的实体类(其中类属性包括List等类型)

    Java实体类:

    SearchFilter 类:

    public class SearchFilter {
        private String groupOp;
        
        private List<SearchRule> rules;
    
        public String getGroupOp() {
            return groupOp;
        }
    
        public void setGroupOp(String groupOp) {
            this.groupOp = groupOp;
        }
    
        public List<SearchRule> getRules() {
            return rules;
        }
    
        public void setRules(List<SearchRule> rules) {
            this.rules = rules;
        }
    }

    SearchRule 类:

    public class SearchRule {
        private String field;
        private String op;
        private String data;
        public String getField() {
            return field;
        }
        public void setField(String field) {
            this.field = field;
        }
        public String getOp() {
            return op;
        }
        public void setOp(String op) {
            this.op = op;
        }
        public String getData() {
            return data;
        }
        public void setData(String data) {
            this.data = data;
        }
    }

    导入的package

     import com.fasterxml.jackson.databind.ObjectMapper;
     import net.sf.json.JSONArray;
     import net.sf.json.JSONObject;

    解析JSON格式字符串的方法

    public SearchFilter jsonToSearchFilter(String filters) {
            SearchFilter searchFilter = null;
            try {
                JSONObject jsonobject = JSONObject.fromObject(filters);//将json格式的字符串转换成JSONObject 对象
                JSONArray array = jsonobject.getJSONArray("rules");    //如果json格式的字符串里含有数组格式的属性,将其转换成JSONArray,以方便后面转换成对应的实体
                List<SearchRule> rules = new ArrayList<SearchRule>();
                for (int i = 0; i < array.size(); i++) {
                    JSONObject object = (JSONObject) array.get(i);     //将array中的数据进行逐条转换
                    SearchRule rule = (SearchRule) JSONObject.toBean(object, SearchRule.class);  //通过JSONObject.toBean()方法进行对象间的转换
                    rules.add(rule);
                }
                String groupOp = jsonobject.getString("groupOp");  //简单的直接获取值
                searchFilter = new SearchFilter();                 //对SearchFilter对象进行组装
                searchFilter.setGroupOp(groupOp);
                searchFilter.setRules(rules);
            } catch (Exception e) {
                System.out.println("filters=" + filters.toString() + ".json转换成实体类出错");
                e.printStackTrace();
            }
            return searchFilter;
        }

    这里只进行了SearchFilter类中list<SearchRule>rule属性的对象转换,因为它是一个SearchRule对象数组,需要单独拿出来进行json转换成对象,如果直接对filter进行 SearchFilter进行实体转换会报错。如果对象中不含有list,array,map等集合,可以像8-9行一样进行对象转换。

    测试:

    public static void main(String[] args) {
            UserMgmtController con = new UserMgmtController();
            String filters="{"groupOp": "OR","rules": [{"field": "realname","op": "eq","+
                           ""data": "1234"},{"field": "cityCode","op": "ne","data": "5678"}]}";
            SearchFilter searchFilter =con.jsonToSearchFilter(filters);
            System.out.println("gop="+searchFilter.getGroupOp()+" rules.size="+searchFilter.getRules().size());
        }
    结果:gop=OR rules.size=2

    将java对象转换成json格式:

    //将Object 对象转换成 json
        public String objectToJson(Object obj) {
            ObjectMapper mapper = new ObjectMapper();
            // Convert object to JSON string
            String jsonStr = null;
            try {
                jsonStr = mapper.writeValueAsString(obj);
            } catch (IOException e) {
                log.error(obj + "entity 轉換成 json出錯", e);
                e.printStackTrace();
                System.out.println("entity 轉換成 json出錯");
            }
            return jsonStr;
        }

    将Object 转换成json字符串时,默认使用用是的驼峰方式,如果不想使用驼峰则可以增加红色部分设置,带下划线的也可以原样输出

    public String objectToJson(Object obj){
            ObjectMapper mapper = new ObjectMapper();
            String json =null;
            try {
                PropertyNamingStrategy.PascalCaseStrategy pp = new PropertyNamingStrategy.PascalCaseStrategy();            
                mapper.setPropertyNamingStrategy(pp);
                json = mapper.writeValueAsString(obj);
            } catch (JsonProcessingException e) {
                log.error("json对象转换失败",e);
                e.printStackTrace();
            }
            return json;
        }

    结果:

    "UpLoadDateTime":"2017-09-25 10:51:41",
    "OrganizationId":"B3EA5A4D-7C60-4C21-AF09-494890467C34""Test_Code":""
  • 相关阅读:
    本月周六周日LIST集合
    c#动态调用WEBSERVICE接口
    c#调用
    web上传下载文件
    MVC 的知识
    MongoDB 无法创建抽象类的问题,
    并行活动
    C# 字符串计算表达式
    c# 将字符串转换为逻辑表达式(字符串转换布尔)
    C# 中间语言、CLR、CTS、CLS
  • 原文地址:https://www.cnblogs.com/Comet-Fei/p/12239736.html
Copyright © 2020-2023  润新知