写在前面,首先,我用的java转json序列化的工具是java开源的jackson。
今天在做后端接口的时候,发现获取的json对象中少了几个属性,因为其他的接口都能得到正确的json,所以很快就找到了问题所在,先上代码
public class ChargeDto implements Serializable { private static final long serialVersionUID = -4617215025083571608L; protected Integer cId; protected String Item; protected Double Amount; protected Integer Vcid; @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") protected Date CreateTime; protected String CreateEName; }
{ "status": 200, "message": "成功", "data": [ { "CreateTime": "2020-05-04 01:41:19" }, { "CreateTime": "2020-05-04 02:10:11" }] }
是的,这里我的类中只有属性,没有getter、setter方法,所以获取的json中少了一些属性。
解决方法一:后来我将类中的所有属性加上了getter、setter方法之后得到了正确的json对象。
{ "status": 200, "message": "成功", "data": [ { "cId": 1, "item": "挂号", "createEName": "医生1", "createTime": "2020-05-04 01:41:19", "amount": 5, "vcid": 1 }, { "cId": 2, "CreateTime": "2020-41-04 01:41:38", "item": "处方结算", "createEName": "医生1", "createTime": "2020-05-04 02:10:11", "amount": 122, "vcid": 1 }] }
虽然很快解决了,但是我还是上网查了下原因,然后我查阅知晓对于我用的jackson来说,需要类中有getter方法。是的,虽然我一次性把Setter方法也加上了,但是对于jackson将java对象转json来说,只要有Getter方法就行了。甚至是不需要有属性!
注意:java对象转成json成立的基本条件只需要有get方法!!
然后我发现我一开始虽然丢失了几个属性,但是我也是有属性转为了json的,就是CreateTime。于是我就注意到了我在CreateTime属性上加的注解@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss"),我想着是不是和这个注解有关,于是我将Getter方法删去,在其他属性上加上了注解
public class ChargeDto implements Serializable { private static final long serialVersionUID = -4617215025083571608L; protected Integer cId; protected String Item; @JsonFormat protected Double Amount; @JsonFormat protected Integer Vcid; @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") protected Date CreateTime; protected String CreateEName; }
然后在json中成功都得到了该属性,
{ "status": 200, "message": "成功", "data": [ { "Amount": 5, "Vcid": 1, "CreateTime": "2020-04-04 01:41:19" }, { "Amount": 122, "Vcid": 1, "CreateTime": "2020-04-04 01:41:38" }] }
所以,解决方法二:在你需要转为json的属性上加上@JsonFormat注解即可
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
问题内容: 我对用Java转换对象的含义感到困惑。 说你有… 这是怎么回事 变量类型会更改吗,还是变量内的对象会更改?很迷茫。 问题答案: 看一下这个样本:
从目标对象的类型看: 无Pojo类对应 Json.fromJson(source/*来源参数*/) 有Pojo类对应 Json.fromJson(Class<T> klass, source/*来源参数*/) Json.fromJson(Type t, source/*来源参数*/) Pojo集合或Map嵌套 Json.fromJsonAsArray(Class<T> klass, source/
例如:Date值为:“dateCollected”:fri Jul 07 00:00:00 IST 1989, 但它只服用星期五而不是整个日期。
主要内容:强制对象类型转换将一个类型强制转换成另一个类型的过程被称为类型转换。本节所说的 对象类型转换,是指存在继承关系的对象,不是任意类型的对象。当对不存在继承关系的对象进行强制类型转换时,会抛出 Java 强制类型转换(java.lang.ClassCastException)异常。 Java 语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进行类型转换。Java 中引用类型之间的类型转换(前提是两个类
我有B、C和D类。刚才,我想添加一个a类,其属性完全绑定到应用程序配置中的值。使用Guice将值注入到类A中的最佳实践是什么? 我能想到的一种可能性是将喷油器实例从D传递到B,并更改B s.t.: 这似乎很糟糕,我没有看到使用它的在线示例。欢迎任何建议。
问题内容: 我有一堂课 具有通用属性 有更好的方法来执行以下操作吗? 即以不同的形式返回泛型? 精度,我使用Gson作为反序列化器,以获取列表,然后每个Data对象都可以是异构的 。还可以注册适配器以进行浮点和长检测,但不会更快或更漂亮 编辑 :gson无法检索多头: 要么: java.lang.Double无法转换为java.lang.Long 要么 java.lang.NumberFormat