zoukankan      html  css  js  c++  java
  • json注解及序列化

    一、json框架

    市面上的json框架常用的有 jackson、gson、fastjson。大家比较推崇的是fastjson,但是springmvc默认集成的是 jackson。

    在一个项目中建议一个项目只是用一种 json 框架。

    二、json使用场景

    1、mvc

    http传输的body虽然是json格式的,但实际还是以串字符串。我们使用对象接收需要进行json转换。同样,返回给浏览器时在解析成字json格式的符串。

    springmvc 支持多种 json框架,默认jsckson,想要修改jackson。

    step1、排除 jackson

    step2、引入 fastjson

    step3、重写 MappingJackson2HttpMessageConverter,HttpMessageConverter。

    2、远程http调用

    有时返回结果是String需要转换

    3、redis序列化

    三、注解

    1、注意json注解的使用要和提供注解的json框架对上。比如@JsonProperty("companId") 是jackson提供的,@JSONField(name = "companId") 是 fastjson提供的。如果springmvc 使用的框架是 jackson,此时在字段上增加 @JSONField 是无效的。

    2、jsckson注解

    @JacksonAnnotation
    @JacksonAnnotationsInside
    @JacksonInject
    @JsonAlias
    @JsonAnyGetter
    @JsonAnySetter
    @JsonAutoDetect
    @JsonBackReference
    @JsonClassDescription
    @JsonCreator
    @JsonEnumDefaultValue
    @JsonFilter
    @JsonFormat
    @JsonGetter
    @JsonIdentityInfo
    @JsonIdentityReference
    @JsonIgnore
    @JsonIgnoreProperties
    @JsonIgnoreType
    @JsonInclude
    @JsonManagedReference
    @JsonMerge
    @JsonProperty
    @JsonPropertyDescription
    @JsonPropertyOrder
    @JsonRawValue
    @JsonRootName
    @JsonSetter
    @JsonSubTypes
    @JsonTypeId
    @JsonTypeInfo
    @JsonTypeName
    @JsonUnwrapped
    @JsonValue
    @JsonView

    3、fastjson注解

    @JSONField(name = "companId")
    @JSONCreator
    @JSONPOJOBuilder
    @JSONType
    @FastJsonFilter()
    @FastJsonView
    @ResponseJSONP

    4、顺便说一下java提供的字段校验注解:都来自package javax.validation.constraints;包

    @AssertFalse
    @AssertTrue
    @DecimalMax(value = "")
    @DecimalMin(value = "")
    @Digits(integer = 6, fraction = 2, message = "{javax.validation.constraints.Digits.message}")
    @Email
    @Future
    @FutureOrPresent
    @Max(1)
    @Min(1)
    @Negative
    @NegativeOrZero
    @NotBlank
    @NotEmpty
    @NotNull
    @Null
    @Past
    @PastOrPresent
    @Pattern(regexp = "\w+$")
    @Positive
    @PositiveOrZero
    @Size

    5、
    package org.springframework.data.annotation;
    @Transient
    @TypeAlias
    @AccessType
    @AccessType
    @Id
    @Immutable
    @Persistent
    @QueryAnnotation
    @ReadOnlyProperty
    @Reference
    @Version

     https://www.cnblogs.com/panbingqi/p/11212194.html

    https://www.cnblogs.com/yucy/p/9057049.html



  • 相关阅读:
    安装 Visual Studio 出现网络问题,无法连接
    开机时如何默认关闭小键盘
    nginx 443端口配置
    nginx启动提示 nginx: [emerg] the INET6 sockets are not supported on this platfor
    ffmpeg 常用命令
    linux下安装python3.7.2
    Win10的Hyper-V虚拟机上安装Ubuntu后显示分辨率问题
    Hyper-V安装CentOS修改分辨率
    Linux 设置简单密码
    nginx 80端口跳转到443
  • 原文地址:https://www.cnblogs.com/cuiqq/p/12082563.html
Copyright © 2011-2022 走看看