随笔 - 836  文章 - 1 评论 - 40 阅读 - 102万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

关于@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));
    }
复制代码

 

posted on   lshan  阅读(2409)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示