接口异常是什么意思

接口异常是什么意思,第1张

接口异常的意思就是服务器崩了,网络导致视频播放失败,接口出现了异常。

检查自己的网路是不是已经连接成功了,网速限速没,连接成功后再次登录,就可以看自己想要看的视频了。

@JSONField

作用:在字段和方法上

1 Field:@JSONField作用在Field时,name可以定义输入key的名字,反序列化的时 值不会赋值到属性上

2 作用在setter和getter方法上

3 format :用在Date类型的字段来格式化时间格式

4 布尔类型:serialize和deserialize

在序列化的时候就不包含这个字段了。deserialize与之相反。但是有一点需要注意,当字段为final的时候注解放在字段上是不起作用的,这时候应该放在get或set方法上。

5 serialzeFeatures 属性:fastjson默认的序列化规则是当字段的值为null的时候,是不会序列化这个字段

对象序列化下边的类,结果是:{"name":"LiSi","age":18}

6 SerializerFeature枚举

当value的值为null的时候,依然会把它的值序列化出来: {"name":"LiSi","age":18,"address":null}

当字段类型为int类型时,会序列化成 0,需要把类型改成Integer

1 引入jar包

2 jsonProperty介绍

@JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty(value="name")。

3 jackson的@JsonIgnore使用

作用:在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

使用方法:一般标记在属性或者方法上,返回的json数据即不包含该属性。

JDK英文文档,墙裂不推荐看中文!!!

ObjectMapper的API文档

1 需要注意的是:

2 Jackson的API: `

3 Jackson提供的注解

Jackson 提供了一系列的注解,方便对 JSON 序列化和反序列化进行控制,下面介绍一些常用的注解:

1 引入MAVEN依赖:

2 实体类

3 测试类:

首先注意的是 JDK18 中时间类,采用了一套新的API。

在这里我们采用是 LocalDate 类,若是 User 类中,没有使用注解,那么序列化结果为:

显然,这不是我们预期的 Json 串。并且,我们在反序列化过程中,会出现异常:

comfasterxmljacksondatabindexcInvalidDefinitionException: Cannot construct instance of javatimeLocalDate (no Creators, like default construct, exist):

cannot deserialize from Object value (no delegate- or property-based Creator)

at [Source: (String)"{"name":"小胖","sports":["足球","游泳"],"date":{"year":2019,"month":"MARCH","chronology":{"id":"ISO","calendarType":"iso8601"},"dayOfMonth":27,"dayOfWeek":"WEDNESDAY","dayOfYear":86,"era":"CE","monthValue":3,"leapYear":false}}"; line: 1, column: 43] (through reference chain: comJsonSerializerUser["date"])

大概意思:就是 LocalDate 的没有参数是 Object 的构造函数。不能实例化对象。

华丽的分割线 SpringBoot的处理

SpringBoot的解决方案:

Java bean的解决方案:

在 Java Bean 中使用注解,就可以进行反序列化和序列化。

执行结果:

FastJson 是性能极好的 JSON 解析器和生成器。

1 FastJson的优点:

2 FastJson的主要类:

1 FastJson的MAVEN依赖:

2 JSON准备:

ARR_JSON格式:

COMPLEX_JSON格式:

使用方式: github的使用文档

1 通过 TypeReference 处理泛型对象

2 使用 getType() 可以获取更好的性能。

1 TypeRefrence部分源码分析:

为什么这里的构造方法要是 protected 的,即我们无法直接创建该对象,只能使用匿名类创建 子类 对象。

getGenericSuperclass()的API方法

返回 Class 对象(类,接口,基本数据类型,void)的直接父类的 Type 类型。

如果父类是 parameterized [pə'ræmɪtəraɪzd] 类型(也可以理解为 父类是泛型对象 ),那么返回的参数类型是父类的泛型类型。

基本原理:

使用 public static <T> T parseObject(String text, Class<T> clazz) 方法,边可完成JSON的反序列化。

1 特殊JSON反序列化

2 泛型丢失

我们可以看到,因为返回值需要泛型类型 T 所以我们采用的是 Class<T> ,防止返回Object对象,让用户强转。但需要注意: 这种方式在反序列化的时候,会丢失泛型类型。

方式一:TypeReference

方式二:使用parseArray

我们可以通过这个 API ,完成 Bean 对象转换成 String 类型。

String toJSONString(Object object, SerializerFeature features)

若是对象的属性只是简单数据类型(基本数据类型,或者String类型)那么可以使用Class方式转化为Object对象。

若是一个对象里面的属性依旧是一个对象,那么我们就可以使用TypeRefrence进行转换。

我们在将JSON转换为对象的时候,就可以保留List<T>的泛型。即:

参考文章:

Java下利用Jackson进行JSON解析和序列化

使用FastJson处理JSON数据

fastjson如何json数组串转换为Object[]时如何指定各个数据项的数据类型

以上就是关于接口异常是什么意思全部的内容,包括:接口异常是什么意思、fastJson的@JSONField和jackson的@JsonProperty使用、Jackson序列化&&FastJson序列化API使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9592066.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存