codecamp

Nutz.Json 注解一览表

共3个注解

@JsonField属性或方法控制是否忽略该属性,控制输出及日期格式
@JsonIgnore属性或方法专门用于控制忽略特定数值
@ToJson方法自定义本对象转换为Json字符串的逻辑

JsonField的ignore配置详解

忽略属性,无论是fromJson还是toJson,永久性的哦,即使JsonFormat也不可控制. 默认为false

public class Pet {
    private String name;
    private int age;
    
    @JsonField(ignore=true)
    private String location;
}

测试代码

Pet pet = new Pet();
pet.setName("dongdong");
pet.setAge(10);
pet.setLocation("地球");
Json.toJson(pet);

输出

{
    name : "dongdong",
    age : 10
}

JsonField的forceString配置

指定属性直接应用toJson,而不进行Map-List变换,默认为false

public class Pet {
    private String name;
    private int age;
    
    @JsonField(forceString=true)
    private Location location;
}

public class Location {
    private String planet;
    private String area;
    
    public Location(){}
    
    public Location(String planet, String area) {
        this.planet = planet;
        this.area = area;
    }
    
    public String toString() { 
        // 任何返回值就会直接拼入json字符串,不经转义.
        // 这里返回 "[1,PI]"
        // 那么拼入字符串中的值就是  [1, PI]
        return "[1, PI]";
        
    }
}

测试代码

Pet pet = new Pet();
pet.setName("dongdong");
pet.setAge(10);
pet.setLocation(new Location("地球", "北半球"));
Json.toJson(pet);

输出,注意PI并没有用双引号圈起来.

{
    name : "dongdong",
    age : 10,
    location : [1, PI]
}

JsonField的dateFormat配置

当属性类型为java.util.Date类或其子类时,这配置可以控制输出的日期格式

public class Pet {
    private String name;
    
    @JsonField(dateFormat="yyyyMMdd")
    private java.util.Date born;
}

测试代码

Pet pet = new Pet();
pet.setName("dongdong");
pet.setDate(new Date());
Json.toJson(pet);

输出

{
    name : "dongdong",
    born : "20150608"
}

JsonIgnore注解

当前,这个注解是专门用于忽略特定的数值

下面的配置,就是当age为100时不输出,当location为0.2d时也不输出

public class Pet {
    private String name;
    
    @JsonIgnore(null_int=100)
    private int age;
    
    @JsonIgnore(null_double=0.2d)
    private double location;
}

注意,切勿import错了哦,因为jackson里面也有个相同名称的注解

ToJson注解

这个注解可以让你完全控制当前类的json输出, 方法的返回值将直接拼入Json字符串,不经过任何转义.

被注解的方法有2种方式,无参或以JsonFormat作为参数,返回值必须是String

@ToJson
public String wendalJson() {
    return "age:" + age + ", /*我就喜欢弄个注释*/";
}
@ToJson
public String wendalJson(JsonFormat jf) {
    if (name == null && jf.isIgnoreNull) {
        return "{age:" + age + "}";
    }
    return "{age:" + age + ", name: null}"; // 我就喜欢返回个null,有值也返回null,咋的,就是这么任性
}
Nutz.Json 在Mvc中的用法
表达式引擎简介
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

表达式引擎

maplist结构

图像处理小军刀

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }