zoukankan      html  css  js  c++  java
  • Java Json 数据下划线与驼峰格式进行相互转换

    概述

    今天遇见一个需求,需要对json数据进行下划线与驼峰格式之间进行转换,在Fastjson、Jackson、Gson都提供了转换的方式,在这里进行一下列举。

    User类:

    public class User {
    
        private String nameInfo;
    
        private String ageInfo;
    
        public String getNameInfo() {
            return nameInfo;
        }
    
        public void setNameInfo(String nameInfo) {
            this.nameInfo = nameInfo;
        }
    
        public String getAgeInfo() {
            return ageInfo;
        }
    
        public void setAgeInfo(String ageInfo) {
            this.ageInfo = ageInfo;
        }
    }
    

      

    Fastjson

    // 生产环境中,config要做singleton处理,要不然会存在性能问题
    User user = new User();
    user.setNameInfo("coder");
    user.setAgeInfo("28");
    SerializeConfig config = new SerializeConfig();
    config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
    String json = JSON.toJSONString(user, config);
    Assert.assertEquals("{"age_info":"28","name_info":"coder"}", json);
    

     

    Gson

    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
    Gson gson = gsonBuilder.create();
    
    User user = new User();
    user.setName("coder");
    user.setAge(28);
    
    String json = gson.toJson(user);
    Assert.assertEquals("{"age_info":"28","name_info":"coder"}", json);
    
    

      

     

    Jackson

    User user = new User();
    user.setNameInfo("coder");
    user.setAgeInfo("28");
    ObjectMapper mapper = new ObjectMapper();
    mapper.setPropertyNamingStrategy(com.fasterxml.jackson.databind.PropertyNamingStrategy.SNAKE_CASE);
    String json = mapper.writeValueAsString(user);
    Assert.assertEquals("{"name_info":"coder","age_info":"28"}", json);
    

      

  • 相关阅读:
    网络流24题总结和题解
    NOIP复习之1 数学数论
    BZOJ3301 P2524 UVA11525 算法解释康托展开
    线段树与树状数组的综合运用
    P2261 bzoj1257 [CQOI2007]余数求和
    BZOJ 1968_P1403 [AHOI2005]约数研究--p2260bzoj2956-模积和∑----信息学中的数论分块
    P1064 金明的预算方案
    洛谷p1002 过河卒
    Luogu P3014 [USACO11FEB]牛线Cow Line
    Luogu P3927 SAC E#1
  • 原文地址:https://www.cnblogs.com/chancy/p/9836293.html
Copyright © 2011-2022 走看看