zoukankan      html  css  js  c++  java
  • Json 格式化, 排序, 标准格式 ,修改字段名 @JSONField @JsonIgnore @JsonIgnoreProperties

    关于@JsonIgnore @JsonIgnoreProperties这两个注解,是用在JSON循环引用的情况上,那么现在关于这两个注解,还可以使用在另外一种情况上

    即:

      一般标记在属性或者方法上,返回的json数据即不包含该属性

    关于这种情况在什么时候会遇到呢?

    例如:

    User实体中会有字段password字段,当返回用户信息给前台的时候,当然是不希望将password值也一并返回,

    所以,可以在password属性上加上注解JsonIgnore

    或者,可以在User类上加上注解@JsonIgnoreProperties(value = "{password}")

    Test 代码:

    @Slf4j
    public class JsonDiffUtilsTest {
    /**
      * 使用@JSONField 进行字段名修改, 并指定序列化顺序  或这忽略某个字段 @JSONField(serialize = false) 
    */ 测试Bean // public class PartItem { // @JSONField(ordinal=1,name="ITEM_NO") // private String partNo; // @JSONField(ordinal=2,name="PCS") // private Number pcs; // @JSONField(ordinal=3,name="ORG") // private String org; // @JSONField(ordinal=4,name="PALLET") // private Number pallet; // @JSONField(ordinal=5,name="VOLUMNE") // private String volume; // @JSONField(ordinal=6,name="GW") // private Number gw; // } /** * <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> <fastjson.version>1.2.24</fastjson.version> * @throws Exception */ @Test public void testToJsonAndFormart() throws Exception { PartItem partItem = new PartItem(); partItem.setGw(1); partItem.setOrg("sea"); partItem.setPartNo("01"); partItem.setVolume("2l"); //tojson 并且格式化(标准json) 排序(按照字段中的顺序) String jsonString = JSON.toJSONString(partItem, SerializerFeature.PrettyFormat,SerializerFeature.SortField); // String jsonString = JSON.toJSONString(partItem, SerializerFeature.PrettyFormat); //格式化,并且打印空值 // String jsonString = JSON.toJSONString(partItem,SerializerFeature.PrettyFormat,SerializerFeature.WriteMapNullValue); System.err.println(jsonString); /*{ "ITEM_NO":"12321", "ORG":"sa", "VOLUMNE":"2l", "GW":1 }*/ }}

    格式化日期date类型,默认会格式为long 

        @Test
        private static void testConvertDateToJson() {
            Date date = new Date();
    //        String dt = JSONObject.toJSONString(date, SerializerFeature.WriteDateUseDateFormat);//"2019-07-31 11:20:32"
            String dt = JSONObject.toJSONString(date);
            System.err.println(dt);
        }

    json 读取,可以实现json转bean , --反射通过fieldName 赋值即可

        @Test
        public  void jsonDiffhah() throws  Exception{
            log.debug("aaa");
            String json = "{"username":"zhangsan","性别":"男","company":{"companyName":"中华","address":"北京"},"cars":["奔驰","宝马"]}";
            ObjectMapper mapper = new ObjectMapper();
            //JSON ----> JsonNode
            JsonNode rootNode = mapper.readTree(json);
            Iterator<String> keys = rootNode.fieldNames();
            while(keys.hasNext()){
                String fieldName = keys.next();
                System.out.println(fieldName + ": " + rootNode.path(fieldName).toString());
            }
            //JsonNode ----> JSON
            System.out.println(mapper.writeValueAsString(rootNode));
        }
  • 相关阅读:
    requestAnimationFrame
    react 面试题
    useState使用和原理
    常用网址记录
    .net 学习官网
    centos nginx 设置开启启动
    Asp.Net Core 发布和部署 Linux + Nginx
    SQL Server 执行计划缓存
    SQL Server之索引解析(二)
    SQL Server之索引解析(一)
  • 原文地址:https://www.cnblogs.com/lshan/p/11274820.html
Copyright © 2011-2022 走看看