当前位置: 首页 > news >正文

21年网站搭建公司排行榜南京模板建站定制网站

21年网站搭建公司排行榜,南京模板建站定制网站,微信搜索wordpress内容,河南确诊病例最新消息Jackson JSON 框架中包含了大量的注解来让我们可以干预 Jackson 的 JSON 处理过程#xff0c; 例如我们可以通过注解指定 java pojo 的某些属性在生成 json 时被忽略。。本文主要介绍如何使用 Jackson 提供的注解。 Jackson注解主要分成三类#xff0c;一是只在序列化时生效的…Jackson JSON 框架中包含了大量的注解来让我们可以干预 Jackson 的 JSON 处理过程 例如我们可以通过注解指定 java pojo 的某些属性在生成 json 时被忽略。。本文主要介绍如何使用 Jackson 提供的注解。 Jackson注解主要分成三类一是只在序列化时生效的注解二是只在反序列化时候生效的注解三是两种情况下都生效的注解。 多态注解 对象双向引用及对象ID JsonManagedReferenceJsonBackReference: 这对注解用于指示和处理用一对匹配属性表示的父/子关系 (双向引用将导致无限递归)。 JsonIdentityInfo: 类/属性注解 用于指示在序列化/反序列化值时要使用“对象标识id”以便可以正确反序列化对单个 Java 对象的多个引用 配置大全 spring:jackson:# 设置属性命名策略,对应jackson下PropertyNamingStrategy中的常量值SNAKE_CASE-返回的json驼峰式转下划线json body下划线传到后端自动转驼峰式property-naming-strategy: SNAKE_CASE# 全局设置JsonFormat的格式patterndate-format: yyyy-MM-dd HH:mm:ss# 当地时区locale: zh_CN# 设置全局时区time-zone: GMT8# 常用全局设置pojo或被JsonInclude注解的属性的序列化方式default-property-inclusion: NON_NULL #不为空的属性才会序列化,具体属性可看JsonInclude.Include# 常规默认,枚举类SerializationFeature中的枚举属性为key值为boolean设置jackson序列化特性,具体key请看SerializationFeature源码visibility:#属性序列化的可见范围getter: non_private#属性反序列化的可见范围setter: protected_and_public#静态工厂方法的反序列化CREATOR: public_only#字段FIELD: public_only#布尔的序列化IS_GETTER: public_only#所有类型(即getter setter FIELD不受影响,无意义NONE: public_only#所有类型(即getter setter FIELD都受其影响慎用ALL: public_onlyserialization:#反序列化是否有根节点WRAP_ROOT_VALUE: false#是否使用缩进格式化输出INDENT_OUTPUT: falseFAIL_ON_EMPTY_BEANS: true # 对象不含任何字段时是否报错默认trueFAIL_ON_SELF_REFERENCES: true #循环引用报错WRAP_EXCEPTIONS: true #是否包装异常FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS: true #JsonUnwrapped标记的类有类型信息是否报错WRITE_SELF_REFERENCES_AS_NULL: false #循环引用返回nullCLOSE_CLOSEABLE: true #若对象实现了CLOSEABLE接口在序列化后是否调用Close方法FLUSH_AFTER_WRITE_VALUE: false #流对象序列化之后是否强制刷新WRITE_DATES_AS_TIMESTAMPS: true # 返回的java.util.date转换成时间戳WRITE_DATES_WITH_ZONE_ID: true #2011-12-03T10:15:3001:00[Europe/Paris]带时区idWRITE_DURATIONS_AS_TIMESTAMPS: true #将DURATIONS转换成时间戳WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS: false #是否字符数组输出json数组 (false则输出字符串)WRITE_ENUMS_USING_TO_STRING: false # 将枚举输出toStringWRITE_ENUMS_USING_INDEX: false #枚举下标WRITE_ENUM_KEYS_USING_INDEX: false #枚举key类似WRITE_NULL_MAP_VALUES: false #是否输出map中的空entry(此特性已过期请使用JsonInclude注解)WRITE_EMPTY_JSON_ARRAYS: true # 对象属性值是空集合是否输出空json数组WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED: false #是否将单个元素的集合展开即去除数组符号[]WRITE_BIGDECIMAL_AS_PLAIN: false #是否调用BigDecimal#toPlainString()输出WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS: #将timestamp输出为纳秒ORDER_MAP_ENTRIES_BY_KEYS: false #map序列化后是否用key对其排序EAGER_SERIALIZER_FETCH: true #是否马上获取序列化器USE_EQUALITY_FOR_OBJECT_ID: false #是否使用objectId比较是否相等在ORM框架Hibernate中有应用# 枚举类DeserializationFeature中的枚举属性为key值为boolean设置jackson反序列化特性,具体key请看DeserializationFeature源码deserialization:USE_BIG_DECIMAL_FOR_FLOATS: false #将浮点数反序列化为BIG_DECIMALUSE_BIG_INTEGER_FOR_INTS: false #将整数反序列化为BIG_INTEGERUSE_LONG_FOR_INTS: false #将整型反序列化为长整USE_JAVA_ARRAY_FOR_JSON_ARRAY: false #无明确类型时是否将json数组反序列化为java数组若是true就对应Object[] ,反之就是List?FAIL_ON_UNKNOWN_PROPERTIES: false # 常用,json中含pojo不存在属性时是否失败报错,默认trueFAIL_ON_NULL_FOR_PRIMITIVES: false #将null反序列化为基本数据类型是否报错FAIL_ON_NUMBERS_FOR_ENUMS: false #用整数反序列化为枚举是否报错FAIL_ON_INVALID_SUBTYPE: false #找不至合适的子类否报错 如注解JsonTypeInfo指定的子类型FAIL_ON_READING_DUP_TREE_KEY: false #出现重复的json字段是否报错FAIL_ON_IGNORED_PROPERTIES: false #如果json中出现了java实体字段中已显式标记应当忽略的字段是否报错FAIL_ON_UNRESOLVED_OBJECT_IDS: true #如果反序列化发生了不可解析的ObjectId是否报错FAIL_ON_MISSING_CREATOR_PROPERTIES: false #如果缺少静态工厂方法的参数是否报错false,则使用null代替需要的参数FAIL_ON_NULL_CREATOR_PROPERTIES: false #将空值绑定到构造方法或静态工厂方法的参数是否报错FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY: false #注解JsonTypeInfo.As#EXTERNAL_PROPERTY标记的属性缺失是否报错FAIL_ON_TRAILING_TOKENS: false #出现尾随令牌是否报错如果是true,则调用JsonParser#nextToken检查json的完整性WRAP_EXCEPTIONS: true #是否包装反序列化出现的异常ACCEPT_SINGLE_VALUE_AS_ARRAY: true #反序列化时是否将一个对象封装成单元素数组UNWRAP_SINGLE_VALUE_ARRAYS: false #反序列化时是否将单元素数组展开为一个对象UNWRAP_ROOT_VALUE: false #是否将取消根节点的包装ACCEPT_EMPTY_STRING_AS_NULL_OBJECT: false #是否将空字符()串当作null对象ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT: false #是否接受将空数组([])作为nullACCEPT_FLOAT_AS_INT: true #是否接受将浮点数作为整数READ_ENUMS_USING_TO_STRING: false #按照枚举toString()方法读取false则按枚举的name()方法读取READ_UNKNOWN_ENUM_VALUES_AS_NULL: false #读取到未知的枚举当作nullREAD_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE: false #读取到未知的枚举,将其当作被JsonEnumDefaultValue注解标记的枚举READ_DATE_TIMESTAMPS_AS_NANOSECONDS: true #将时间戳视为纳秒(false,则视为毫秒)ADJUST_DATES_TO_CONTEXT_TIME_ZONE: true #反序列化是否会适应DeserializationContext#getTimeZone()提供的时区 此特性仅对java8的时间/日期有效EAGER_DESERIALIZER_FETCH: true #是否马上获取反序列化器# 枚举类MapperFeature中的枚举属性为key值为boolean设置jackson ObjectMapper特性# ObjectMapper在jackson中负责json的读写、json与pojo的互转、json tree的互转,具体特性请看MapperFeature,常规默认即可mapper:USE_ANNOTATIONS: true #是否使用注解自省检查JsonProperties这些# 使用getter取代setter探测属性这是针对集合类型可以直接修改集合的属性USE_GETTERS_AS_SETTERS: true #默认falsePROPAGATE_TRANSIENT_MARKER: false #如何处理transient字段如果true(不能访问此属性) 若是false则不能通过字段访问还是可以使用getter和setter访问AUTO_DETECT_CREATORS: true #是否自动检测构造方法或单参且名为valueOf的静态工厂方法AUTO_DETECT_FIELDS: true #是否自动检测字段 若true,则将所有public实例字段视为为属性AUTO_DETECT_GETTERS: true #确定是否根据标准 Bean 命名约定自动检测常规“getter”方法的不包括is getterAUTO_DETECT_IS_GETTERS: true #确定是否根据标准 Bean 命名约定自动检测“is getter”方法AUTO_DETECT_SETTERS: false # 确定是否根据标准 Bean 命名约定自动检测“setter”方法REQUIRE_SETTERS_FOR_GETTERS: false #getter方法必需要有对应的setter或字段或构造方法参数才能视为一个属性ALLOW_FINAL_FIELDS_AS_MUTATORS: true #是否可以修改final成员字段INFER_PROPERTY_MUTATORS: true #是否能推断属性(即使用字段和setter是不可见的但getter可见即可推断属性)INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIES: true #是否自动推断ConstructorProperties注解CAN_OVERRIDE_ACCESS_MODIFIERS: true #调用AccessibleObject#setAccessible设为true .将原来不可见的属性变为可见OVERRIDE_PUBLIC_ACCESS_MODIFIERS: true #对所有的属性调用AccessibleObject#setAccessible设为true .即使用是公共的USE_STATIC_TYPING: false #序列化使用声明的静态类型还是动态类型 JsonSerialize#typing注解可覆盖它USE_BASE_TYPE_AS_DEFAULT_IMPL: false # 反序列化是否使用基本类作为默实现 JsonTypeInfo.defaultImplDEFAULT_VIEW_INCLUSION: true #没有JsonView注解标记的属性是否会被包含在json序列化视图中SORT_PROPERTIES_ALPHABETICALLY: false #按字母表顺序序列化字段若false按字段声明的顺序ACCEPT_CASE_INSENSITIVE_PROPERTIES: false #反序列化属性时不区分大小写 true时会影响性能ACCEPT_CASE_INSENSITIVE_ENUMS: false #枚举反序列化不区别大小写ACCEPT_CASE_INSENSITIVE_VALUES: false #允许解析一些枚举的基于文本的值类型但忽略反序列化值的大小写 如日期/时间类型反序列化器USE_WRAPPER_NAME_AS_PROPERTY_NAME: false # 使用包装器名称覆盖属性名称 AnnotationIntrospector#findWrapperName指定的USE_STD_BEAN_NAMING: false # 是否以强制与 Bean 名称自省严格兼容的功能若开启后getURL()变成URL jackson默认false, urlALLOW_EXPLICIT_PROPERTY_RENAMING: false #是否允许JsonProperty注解覆盖PropertyNamingStrategyALLOW_COERCION_OF_SCALARS: true # 是否允许强制使用文本标题 即将字符串的true当作布尔的true ,字符串的1.0当作doubleIGNORE_DUPLICATE_MODULE_REGISTRATIONS: true #如果模块相同Module#getTypeId()返回值相同只有第一次能会真正调用注册方法IGNORE_MERGE_FOR_UNMERGEABLE: true #在合并不能合并的属性时是否忽略错误BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES: false #阻止不安全的基类如Object Closeable Cloneable AutoCloseable Serializableparser:AUTO_CLOSE_SOURCE: true #是否自动关闭不属于解析器的底层输入流ALLOW_COMMENTS: false #是否允许json注解Json规范是不能加注释的但这里可以配置ALLOW_YAML_COMMENTS: false #是否允许出现yaml注释ALLOW_UNQUOTED_FIELD_NAMES: false #是否允许出现字段名不带引号ALLOW_SINGLE_QUOTES: false # 是否允许出现单引号,默认falseALLOW_UNQUOTED_CONTROL_CHARS: false #是否允许出现未加转义的控制字符ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER: false #是否允许对所有字符都可加反斜杠转义ALLOW_NUMERIC_LEADING_ZEROS: false #是否允许前导的零 000001ALLOW_LEADING_DECIMAL_POINT_FOR_NUMBERS: false #是否允许前导的小点数 如 .04314会被解析成0.04314ALLOW_NON_NUMERIC_NUMBERS: false #是否允许NaN型的浮点数 INF当作正无穷 -INF当作负无穷 NaN非数字类型于除数为0ALLOW_MISSING_VALUES: false # 是否允许json数组中出现缺失值 如[value1,,value3,]将被反序列化为[value1, null, value3, null]ALLOW_TRAILING_COMMA: false # 是否允许json尾部有逗号 如{a: true,}STRICT_DUPLICATE_DETECTION: false #是否启用严格的字段名重复检查开启后会增加20-30%左右的性能开销IGNORE_UNDEFINED: false #属性定义未找到是否报错这不是针对json,是针对Avro, protobuf等需要Schema的格式INCLUDE_SOURCE_IN_LOCATION: false #是否包含其源信息如总字节数总字符数 行号 列号 generator:AUTO_CLOSE_TARGET: true #是否自动关闭不属于生成器的底层输出流AUTO_CLOSE_JSON_CONTENT: true #是否自动补全json(当有不匹配的JsonToken#START_ARRAY JsonToken#START_OBJECT时)FLUSH_PASSED_TO_STREAM: true #是否刷新generatorQUOTE_FIELD_NAMES: true #是否为字段名添加引号QUOTE_NON_NUMERIC_NUMBERS: true #对于NaN浮点数是否加引号ESCAPE_NON_ASCII: false #非ASCII码是否需要转义WRITE_NUMBERS_AS_STRINGS: false #将数字当作字符串输出 防止Javascript长度限制被截断WRITE_BIGDECIMAL_AS_PLAIN: false #按BigDecimal的toPlainString()输出STRICT_DUPLICATE_DETECTION: false #是否启用严格的字段名重复检查IGNORE_UNKNOWN: false #属性定义未找到是否报错这不是针对json,是针对Avro, protobuf等需要Schema的格式 一: 两种情况下都有效的注解 JsonIgnore 作用域属性或方法上 JsonIgnore 用来告诉 Jackson 在处理时忽略该注解标注的 java pojo 属性 不管是将 java 对象转换成 json 字符串还是将 json 字符串转换成 java 对象。 Data public class SellerInfoEntityprivate String id;private String username;private String password;private String openid;JsonIgnoreprivate Timestamp createTime;JsonIgnoreprivate Timestamp updateTime;public SellerInfoEntity() {}public SellerInfoEntity(String id, String username, String password, String openid) {this.id id;this.username username;this.password password;this.openid openid;} } JsonIgnoreProperties 作用在类上 JsonIgnoreProperties 和 JsonIgnore 的作用相同都是告诉 Jackson 该忽略哪些属性 不同之处是 JsonIgnoreProperties 是类级别的并且可以同时指定多个属性。 Data JsonIgnoreProperties(value {createTime,updateTime}) public class SellerInfoEntityprivate String id;private String username;private String password;private String openid;private Timestamp createTime;private Timestamp updateTime;public SellerInfoEntity() {}public SellerInfoEntity(String id, String username, String password, String openid) {this.id id;this.username username;this.password password;this.openid openid;} } 访问: localhost/sell/jackson/test1 使用注解前:返回值 {code: 0,msg: 成功,data: {id: 1,username: user1,password: 123456,openid: openid,createTime: null,updateTime: null} } 使用注解后:返回值 {code: 0,msg: 成功,data: {id: 1,username: user1,password: 123456,openid: openid,} }JsonIgnoreType JsonIgnoreType 标注在类上当其他类有该类作为属性时该属性将被忽略。 package org.lifw.jackosn.annotation; import com.fasterxml.jackson.annotation.JsonIgnoreType; JsonIgnoreType public class SomeOtherEntityprivate Long id;public Long getId() {return id;}public void setId(Long id) {this.id id;} } public class SomeEntityprivate String name;private String desc;privateSomeEntity 中的 entity 属性在json处理时会被忽略。 JsonProperty JsonProperty 可以指定某个属性和json映射的名称。例如我们有个json字符串为{“user_name”:”aaa”} 而java中命名要遵循驼峰规则则为userName这时通过JsonProperty 注解来指定两者的映射规则即可。这个注解也比较常用。 public class SomeEntityJsonProperty(user_name)private String userName;// ...二、只在序列化情况下生效的注解 JsonPropertyOrder 在将 java pojo 对象序列化成为 json 字符串时使用 JsonPropertyOrder 可以指定属性在 json 字符串中的顺序。 JsonInclude 在将 java pojo 对象序列化成为 json 字符串时使用 JsonInclude 注解可以控制在哪些情况下才将被注解的属性转换成 json例如只有属性不为 null 时。 Data JsonInclude(JsonInclude.Include.NON_NULL) public class SellerInfoEntityprivate String id;private String username;JsonInclude(JsonInclude.Include.NON_EMPTY)private String password;private String openid;private Timestamp createTime;private Timestamp updateTime;public SellerInfoEntity() {}public SellerInfoEntity(String id, String username, String password, String openid) {this.id id;this.username username;this.password password;this.openid openid;} } Controller 测试 RestController RequestMapping(/jackson) public class TestJacksonRequestMapping(test1)public Result test1(){SellerInfoEntity entity new SellerInfoEntity(1,user1,,openid);return new结果: {code: 0,msg: 成功,data: {id: 1,username: user1,openid: openid} }上述例子的意思是 SellerInfoEntity 的所有属性只有在不为 null 的时候才被转换成 json 如果为 null 就被忽略。并且如果password为空字符串也不会被转换. 该注解也可以加在某个字段上。 另外还有很多其它的范围例如 NON_EMPTY、NON_DEFAULT等 三、是在反序列化情况下生效的注解 JsonSetter JsonSetter 标注于 setter 方法上类似 JsonProperty 也可以解决 json 键名称和 java pojo 字段名称不匹配的问题。 public class SomeEntityprivate String desc;JsonSetter(description)public void setDesc(String desc) {this.desc desc;} }上述例子中在将 json 字符串转换成 SomeEntity 实例时会将 json 字符串中的 description 字段赋值给 SomeEntity 的 desc 属性。
http://www.yutouwan.com/news/82727/

相关文章:

  • 云主机如何做网站网站单页seo
  • 细胞医疗 网站模版m3u8插件 wordpress
  • 湘西网站建设花垣佳木斯建设工程交易中心网站
  • 仪征建设局招投标网站沈阳网站制作机构
  • 免费的设计网站有哪些搭建网站设计
  • 微指数查询入口洛阳网站建设seo
  • 六盘水市城乡建设局网站wordpress火车头采集器
  • 公司做网站需要什么条件邢台网站123
  • 商务网站建设论文答辩pptwordpress创建搜索框
  • 长沙有哪些网站建设公司好代运营竞价公司
  • 宁波优质网站制作哪家好与网站签约
  • 怎么做整人网站专业网站设计
  • 婚介网站方案网站建设的请示报告
  • 搜索引擎网站搭建网易网站建设
  • i深建官方网站建站模板免费
  • 神级网页设计网站怎样注册免费网站
  • 网站里面送礼物要钱怎么做代码中国招商网
  • 网站尾部设计沈阳男科医院咨询电话
  • 又拍云wordpress全站cdn2345浏览器网站
  • 网站建设论文3000字范文在线服务器代理
  • 婚庆公司网站怎么做怎么做网络推广方案
  • 免费主题网站郉台网站建设
  • 电子商务网站建设感想网站建设便宜公司
  • 网站群系统建设玉田网站制作
  • 建设网站是主营成本吗国外网络推广方法
  • 做网站延期交付了wordpress 代码样式
  • wordpress全站模板广东省自然资源厅厅长陈光荣简历
  • 长沙微网站接做名片的网站
  • 站长工具亚洲中文精品临汾建设局官方网站
  • 如何查网站的空间思源黑体 wordpress