fastjson @JSONField(jsonDirect = true) 和 filter 一起使用,导致该属性的数据内容为空

mkshixfv  于 2021-11-27  发布在  Java
关注(0)|答案(0)|浏览(490)

实体部分:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Colour {
      private String name;
       @JSONField(jsonDirect = true)
       private String value;
}

测试代码:

public class Test {

    public static void main(String[] args) {
        JSONArray list= new JSONArray();

        JSONObject ob1 = new JSONObject();
        ob1.put("1",100);
        list.add(ob1);

        JSONObject ob2 = new JSONObject();
        ob2.put("2",200);
        list.add(ob2);

        Colour colour = new Colour("test1",list.toJSONString());
        System.out.println("未使用filter, 使用  @JSONField(jsonDirect = true)   操作↓");
        System.out.println(JSON.toJSONString(colour));
        System.out.println();

        System.out.println("使用filter,使用 Excludes 来排除属性  ↓");
        SimplePropertyPreFilter filter2 = new SimplePropertyPreFilter();
        filter2.getExcludes().add("name");
        System.out.println(JSON.toJSONString(colour,filter2));
        System.out.println();

        System.out.println("使用filter, Includes 选择需要的属性 ↓");
        SimplePropertyPreFilter filter = new SimplePropertyPreFilter();
        filter.getIncludes().add("value");
        System.out.println(JSON.toJSONString(colour,filter));
        System.out.println();

    }
}

结果是:

未使用filter, 使用  @JSONField(jsonDirect = true)   操作↓
{"name":"test1","value":[{"1":100},{"2":200}]}

使用filter,使用 Excludes 来排除属性  ↓
{"value":[{"1":100},{"2":200}]}

使用filter, Includes 选择需要的属性 ↓
{"value":[{},{}]}

我的问题: 使用 @JSONField(jsonDirect = true) 的目的是因为我的需求是将一个 json 字符串放入 String 类型的字段里,然后再通过filter 去选择要返回的属性字段。现在 jsonDirect 和 filter 一起使用。结果如上。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题