包的导入

Springboot会自动包含

AndroidStudio中在build.gradle中的dependencies添加

implementation 'com.fasterxml.jackson.core:jackson-core:2.10.0'implementation'com.fasterxml.jackson.core:jackson-databind:2.10.0'

对象的生成

MAPPER.writeValueAsString(object);

完整代码

public staticString toJson(Object pojo) {try{

String data=MAPPER.writeValueAsString(pojo);returndata;

}catch(JsonProcessingException ex) {

ex.printStackTrace();

}return null;

}

对象的解析

接受参数为字符串

MAPPER.readValue(data,beanType)

其中beanType是比如Student.class

完整代码

public static T toPojo(String data, ClassbeanType) {try{returnMAPPER.readValue(data, beanType);

}catch(Exception e) {

e.printStackTrace();

}return null;

}

解析List的对象

public static List toList(String data, ClassbeanType) {

JavaType javaType= MAPPER.getTypeFactory().constructParametricType(List.class, beanType);try{

List list =MAPPER.readValue(data, javaType);returnlist;

}catch(Exception ex) {

ex.printStackTrace();

}return null;

}

解析复杂对象

比如类

class POJO{

String hello;

String hi;

String good;

Integer yes;

Object pay;

}

如何解析pay呢?

1.简单方法

先获取pay的JSON字符串

new ObjectMapper().writeValueAsString(userCmd.getPayload());

然后根据 类型使用toPojo或者toList

其他注意事项

如果json字符串中的属性个数小于java对象中的属性个数,可以顺利转换,java中多的那个属性为null

如果json字符串中出现java对象中没有的属性,则在将json转换为java对象时会报错:Unrecognized field, not marked as ignorable

解决方法:

在目标对象的类级别上添加注解:@JsonIgnoreProperties(ignoreUnknown = true);

java对象名和json中名不一致时解决方法:

在目标对象的字段级别上添加注解:@JsonProperty(value = "name")

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐