jsonserialize 订阅
JsonSerialize 展开全文
JsonSerialize
信息
操作系统
OS X
开发语言
Swift
开源协议
MIT
JsonSerialize
JsonSerialize 是提供安全的方法来编码和解码 Swift 对象为 JSON。 示例: class TestSubStruct: ToJson, FromJson {     let foo = "bar"     init(foo: String) {         self.foo = foo     }     func toJson() -> Json {         return Json.Object(["foo": foo.toJson()])     }     class func fromJson(json: Json) -> TestSubStruct? {         let decoder = JsonDecoder(json: json)         if let value: String = decoder.readValue("foo") {             return TestSubStruct(foo: value)         }         return nil     }}class TestStruct: ToJson, FromJson {     let int    = 123     let float  = 123.0     let string = "foo"     let bool   = true     let array  = ["foo"]     var dict   = ["foo": "bar"]     var sub    = TestSubStruct(foo: "bar")     init() {}     init(json: Json) {         let decoder = JsonDecoder(json: json)         int    = decoder.readValue("int")!         float  = decoder.readValue("float")!         string = decoder.readValue("string")!         bool   = decoder.readValue("bool")!         array  = decoder.readArray("array")!         dict   = decoder.readDictionary("dict")!         sub    = decoder.readValue("sub")!     }     func toJson() -> Json {         let json = [             "int":    int.toJson(),             "float":  float.toJson(),             "string": string.toJson(),             "bool":   bool.toJson(),             "array":  Json.fromArray(array),             "dict":   Json.fromDictionary(dict),             "sub":    sub.toJson(),             "null":   Json.Null             ]         return Json.Object(json)     }     class func fromJson(value: Json) -> TestStruct? {         return value.object ? TestStruct(json: value) : nil     }}class JsonSerializeTests: XCTestCase {     func testJsonEncode() {         let testObject = TestStruct()         let expected = "{\"int\":123.0,\"bool\":true,\"null\":null," +         "\"array\":[\"foo\"],\"dict\":{\"foo\":\"bar\"}," +         "\"float\":123.0,\"string\":\"foo\",\"sub\":{\"foo\":\"bar\"}}"         let encoded = testObject.toJson().toString()         XCTAssert(encoded == expected, "Invalid JSON: \(encoded)")     }     func testJsonEncodeOptional() {         var test: Int?         XCTAssert(Json.fromOptional(test).toString() == "null", "Should be Null")         test = 10         XCTAssert(Json.fromOptional(test).toString() == "10.0", "Should be 10.0")     }     func testJsonDecode() {         let jsonString = "{\"int\":321.0,\"bool\":false," +         "\"array\":[\"bar\"],\"dict\":{\"bar\":\"baz\"}," +         "\"float\":321.0,\"string\":\"bar\",\"sub\":{\"foo\":\"bar\"}}"         let decoder = JsonDecoder(jsonString: jsonString)         let decoded = TestStruct(json: decoder.json)         XCTAssert(decoded.int == 321, "Invalid int value")         XCTAssert(decoded.bool == false, "Invalid bool value")         XCTAssert(decoded.array == ["bar"], "Invalid array value")         XCTAssert(decoded.dict == ["bar": "baz"], "Invalid dic value")         XCTAssert(decoded.float == 321.0, "Invalid float value")         XCTAssert(decoded.string == "bar", "Invalid string value")         XCTAssert(decoded.sub.foo == "bar", "Invalid sub value")     }}
收起全文
精华内容
参与话题
问答
  • @JsonSerialize的使用

    万次阅读 2018-07-15 15:30:03
    @JsonSerialize注解,可以实现date数据转换成long型数据等功能,该注解作用在属性的getter()方法上用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。因为在java中日期时期的时间戳...

    @JsonSerialize注解,可以实现date数据转换成long型数据等功能,该注解作用在属性的getter()方法上

    用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。因为在java中日期时期的时间戳是ms,我现在需要将ms转换为s,就需要将ms/1000
    package com.whf.utils.serializer;
    
    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.SerializerProvider;
    import java.util.Date;
    
    import java.io.IOException;
    
    /**
     *该类可以将data转换成long类型
     */
    public class Data2LongSerizlizer extends JsonSerializer<Date> {
    
    
        @Override
        public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
            //将毫秒值转换成秒变成long型数据返回
            jsonGenerator.writeNumber(date.getTime()/1000);
        }
    
    
    //创建时间
    @JsonSerialize(using = Data2LongSerizlizer.class )
    private Date createTime;
    //更新时间
    @JsonSerialize(using = Data2LongSerizlizer.class )
    private Date updateTime;

    这样就完成了时间戳13位到10位的转换
    展开全文
  • @JsonSerialize注解简介

    2020-08-11 16:05:31
    作用 此注解用于属性或者getter方法上,用于在序列化时嵌入开发者自定义的代码。比如将一个Date类型的变量转换成Long类型,或是序列化一个double时在其后面限制两位小数点。 使用 下面以将日期格式化为yy-mm-dd为例...

    作用

    此注解用于属性或者getter方法上,用于在序列化时嵌入开发者自定义的代码。比如将一个Date类型的变量转换成Long类型,或是序列化一个double时在其后面限制两位小数点。

    使用
    下面以将日期格式化为yy-mm-dd为例。

    1.自定义日期序列化类

    import com.fasterxml.jackson.core.JsonGenerator;
    
    import com.fasterxml.jackson.core.JsonProcessingException;
    
    import com.fasterxml.jackson.databind.JsonSerializer;
    
    import com.fasterxml.jackson.databind.SerializerProvider;
    
    import java.io.IOException;
    
    import java.text.SimpleDateFormat;
    
    import java.util.Date;
    
    /**
    
    * 日期序列化工具,直接将时间类型的转为yyyy-MM-dd类型的数据
    
    */
    
    public class CustomDateSerialize extends JsonSerializer<Date> {
    
        //定义日期格式
    
        private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
        @Override
    
        public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
    
            jsonGenerator.writeString(sdf.format(date));
    
        }
    
    }
    

    2.在实体的get方法上加上@JsonSerialize(using = CustomDateSerialize.class)

    public class User{
    
        private String userName;
    
        private String password;
    
        private Date loginDate;
    
        @JsonSerialize(using= CustomDateSerialize.class)
    
        public Date getLoginDate(){
    
            return this.loginDate;
    
        }
    
    ...
    
    }
    

    参考:https://blog.csdn.net/qq_29645505/article/details/89007323

    展开全文
  • @JsonSerialize

    2019-03-20 15:10:41
    @JsonSerialize(using = LocalDateTimeToTimestamp.class) private LocalDateTime updateTime; package com.zhidianfan.ydcommon.formatter; import com.fasterxml.jackson.core.JsonGenerator; import co...
        @JsonSerialize(using = LocalDateTimeToTimestamp.class)
        private LocalDateTime updateTime;
    
    package com.zhidianfan.ydcommon.formatter;
    
    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.SerializerProvider;
    
    import java.io.IOException;
    import java.time.LocalDateTime;
    import java.time.ZoneOffset;
    
    /**
     * @Author sherry
     * @Description
     * @Date Create in 2019-03-15
     * @Modified By:
     */
    
    public class LocalDateTimeToTimestamp extends JsonSerializer<LocalDateTime> {
        @Override
        public void serialize(LocalDateTime localDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
            if (localDateTime != null) {
                long tim = localDateTime.toEpochSecond(ZoneOffset.of("+8"));//时间戳,秒
                jsonGenerator.writeNumber(tim);
            } else {
                jsonGenerator.writeNumber(0L);
            }
        }
    }
    
    

    这里实现了这么个功能,如果返回给前端的是LocalDateTime对象,就转化成秒的时间戳进行返回

    展开全文
  • @JsonSerialize正确使用

    千次阅读 2019-03-20 03:02:29
    实际开发中,我们一定遇到过这样的问题:前端显示和后台存储数据单位不统一,而且各有各自的理由,统一不了,那就只能由后端转换。每次返回给前端时再转换一遍,返回给前端的json数据,在后端里定义的往往是一个对象...

    实际开发中,我们一定遇到过这样的问题:前端显示和后台存储数据单位不统一,而且各有各自的理由,统一不了,那就只能由后端转换。

    每次返回给前端时再转换一遍,返回给前端的json数据,在后端里定义的往往是一个对象,如何做到优雅的转换呢?只需两步操作:

    1. 写一个负责转换的类,里面写好规则

     public class MySerializerUtils extends JsonSerializer<Integer> {
        @Override
        public void serialize(Integer status, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
            String statusStr = "";
             switch (status) {
                 case 0:
                     statusStr = "新建状态";
                     break;
                 case 1:
                    statusStr = "就绪状态";
                     break;
                 case 2:
                     statusStr = "运行状态";
                     break;
                 case 3:
                     statusStr = "阻塞和唤醒线程";
                     break;
                 case 4:
                    statusStr = " 死亡状态";
                   break;
                 default:
                     statusStr = "状态信息不符合";
             }
             jsonGenerator.writeString(statusStr);
         }
     }
    复制代码

    2. 在实体类上需要装换的字段上加上注解

    /**
     * 多线程生命周期状态值
     */
    @JsonSerialize(using = MySerializerUtils.class)
    private int status;
    复制代码


    注:@JsonSerialize注解,主要应用于数据转换,该注解作用在该属性的getter()方法上。


    转载于:https://juejin.im/post/5c91ad28e51d4574ed4ee0a3

    展开全文
  • 实际开发中,我们一定遇到过这样的问题: 后端用的时间单位是Date,前端用的秒又比如,后端用的金额单位是分,前端用的是元 总之,单位不统一,而且各有各自的理由,统一不了,那就转换吧。...
  • JsonSerialize与 JsonDeserialize使用

    万次阅读 2018-07-31 11:58:20
    1、已注解方式使用 @JsonDeserialize(using= ...@JsonSerialize(using= DateJsonSerializer.class) private Date time; 2、自定义实现类 public class DateJsonDeserializer extends JsonDeseriali...
  • JsonSerialize

    2019-09-29 19:23:24
    @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)//保证序列化json的时候,如果是null的对象,key也会消失 转载于:https://www.cnblogs.com/boguse/p/8550040.html
  • @JsonSerialize注解

    2019-12-26 16:45:43
    @JsonSerialize 此注解用于属性或者getter方法上,用于在序列化时嵌入开发者自定义的代码。较常用的是对Double、Float类型进行保留小数操作、Date日期类型格式化 score分数保留两位有效数字 /** * @author chenyi ...
  • springboot @JsonSerialize 的使用

    千次阅读 2019-08-06 17:25:52
    解决前端显示和后台存储数据单位不一致的问题。 在返回对象时,进行自定义数据格式转换。 1.写一个类继承JsonSerializer 抽象类, 实现其serialize()方法,然后在方法中写入转换规则即可 举例是把Date时间戳从 ...
  • 一: response.setContentType("text/html;charset=utf-8"); ObjectMapper mapper=new ObjectMapper(); JsonFactory factory=mapper.getJsonFactory();... JsonGenerator jsonGenerator=factory.createJsonGe...
  • @JsonSerialize 与 @JsonDeserialize 使用

    万次阅读 2019-01-07 17:02:34
    1、以注解方式使用: @JsonDeserialize(using= ...@JsonSerialize(using= DateJsonSerializer.class) private Date time; 2、自定义实现类:  public class DateJsonDeserializer extends JsonDeserial...
  • springmvc 在将日期对象转换为字符串时, 一般默认会转换为长整型,假如我们需要自己定义格式,通常会写一个类继承JsonSerializer 假如在对象中需要将日期转换为我们需要的格式可以在对应的实体对象的get方法中使用注解...
  • 自定义Jackson序列化 @JsonSerialize

    千次阅读 2018-10-11 22:24:24
    自定义json序列化需要实现StdSerializer&lt;T&gt;或者JsonSerializer&lt;T&gt;。 我要序列化House这个类,加上注解,指定用于序列化的类 package com.xhx.json.entity; import ...
  • SpringMVC日期转换之JsonSerialize

    万次阅读 2013-05-22 19:37:43
    在SPRING MVC3中,比如做REST时,经常要用JASON去解析,遇到了日期格式化的问题, 请看例子: 1) 比如有一个POJO  package ... ...import org.codehaus.jackson.annotate.JsonAutoDetect;...@JsonAutoDetec
  • @JsonSerialize弃用spring boot中,返回json默认是包含空串的,如果我们不想让json返回null值,可以在bean上添加一些注解。 ​@JsonInclude(JsonInclude.Include.NON_EMPTY)​​ 后面的枚举值可以为 ALWAYS, ...
  • @JsonSerialize被弃用

    千次阅读 2019-06-21 11:16:26
    @JsonSerialize弃用 spring boot中,返回json默认是包含空串的,如果我们不想让json返回null值,可以在bean上添加一些注解。 @JsonInclude(JsonInclude.Include.NON_EMPTY) 后面的枚举值可以为 ALWAYS, NON_NULL,//...
  • 我们做后端开发的有时候要返回给前端的数据格式不符合怎么办? 举个例子,比如一张表中的时间,数据库中存储的是yyy-mm-dd hh:mm:ss 这样的形式,而前段需要的是精确到秒的格式,那我们不可能直接把这种格式的数据...
  • 基础注解使用 1、实现JsonSerializer接口 例: public class MySerializerUtils extends JsonSerializer<Integer> { @Override public void serialize(Integer status, JsonGenerator jsonGenerator, ...
  • @JsonSerialize不起作用

    千次阅读 2019-12-25 17:17:58
    在项目中 当字段实体类为Long类型时 如果Long值超过前端js显示的长度...这个时候我们可以用@JsonSerialize,在Json序列化的时候把Long自动转为String, 但是这里有个小坑,被转换的字段必须是包装类类型,否则会...
  • @JsonSerialize通过注解格式化字段样式

    千次阅读 2018-08-09 15:56:28
    @JsonSerialize作用: 此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。 一、定义方法 下面我想说3个例子:1、保留两位小数 2、保留整数 3...
  • jackSon中JsonSerialize注解详解

    千次阅读 2019-05-14 16:07:50
    jackSon中JsonSerialize注解详解 需求 我有个实体类,里面有个字段是Double类型的数据,转换成json的时候要保留四位小数 解决方法 1.拿到的实体类手动进行更改,重新set一回值,有一回set一回,有100回set一百回。 2...
  • jackson-databind-x.x.x.jar  在后台查询出来的数据后,有时候我们需要对数据的值进行格式化,比如日期,时间,若不加任何说明情况下Date类型将以时间戳的形式转换为Json并返回。  jackson提供了一些自定义格式...
  • 【需求】 在前端性别显示“男 / 女”...方式二:使用 @JsonDeserialize 和 @JsonSerialize 注解对在序列化和反序列化时对参数进行处理 【Pojo 类】 @JsonDeserialize        &nb

空空如也

1 2 3 4 5 ... 20
收藏数 3,082
精华内容 1,232
关键字:

jsonserialize