ObjectMapper o
时间: 2024-12-30 10:29:47 浏览: 3
`ObjectMapper`是Java中Jackson库的一个核心组件,它用于将Java对象转换为JSON格式的字符串,反之亦然。当你需要在Java对象和JSON数据之间进行序列化(对象转JSON)和反序列化(JSON转对象)操作时,`ObjectMapper`是非常有用的。
例如,你可以创建一个`ObjectMapper`实例,然后使用它的`writeValueAsString()`方法将一个Java对象转化为JSON字符串,或者使用`readValue()`方法从JSON字符串解析出对应的Java对象:
```java
ObjectMapper mapper = new ObjectMapper();
Person person = new Person("John", 30);
String json = mapper.writeValueAsString(person); // 将Person对象转换为JSON
Person deserializedPerson = mapper.readValue(json, Person.class); // 从JSON字符串反序列化为Person对象
```
在这里,`Person`是一个自定义类,`ObjectMapper`可以根据其字段将其转换成JSON格式,并能根据JSON内容恢复原始的数据结构。
相关问题
@Configuration public class JacksonConfig { @Bean @Primary @ConditionalOnMissingBean(ObjectMapper.class) public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() { @Override public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { jsonGenerator.writeString(""); } }); return objectMapper; } }
这是一个Java类,用于配置Jackson库的ObjectMapper对象。ObjectMapper是Jackson库中最核心的类之一,用于将Java对象转换为JSON格式的字符串或将JSON格式的字符串转换为Java对象。在这个类中,使用了@Bean注解来定义一个名为jacksonObjectMapper的Bean,并且使用了@Primary和@ConditionalOnMissingBean注解来保证这个Bean是首选的ObjectMapper,并且仅在没有其他ObjectMapper Bean存在时才创建。在这个Bean中,设置了一个NullValueSerializer,用于将Java对象中的null值序列化为一个空字符串。
{ "code": "0", "msg": "success", "data": { "total": 1, "list": [ { "personId": "3377634", "personName": "杨博", "gender": 1, "orgIndexCode": "13211331", "certificateType": 111, "certificateNo": "642223199811280016", "jobNo": "90223505", "birthday": "1998-11-28", "phoneNo": "18309540994", "email": "", "pinyin": "yangbo", "createTime": "2022-09-16T02:03:01.622+08:00", "updateTime": "2022-11-14T19:10:59.071+08:00", "faceNum": 1, "fingerprintNum": 0, "orgName": "宁夏宝丰能源集团股份有限公司信息化部", "orgPath": "@root000000@a1d7bcc3-7e73-4aa5-be78-e7448aed6111@13201129@13211280@13211331@", "orgPathName": "宝丰集团/员工同步组织/宁夏宝丰集团/宁夏宝丰能源集团股份有限公司/宁夏宝丰能源集团股份有限公司信息化部", "orgList": [ "13211331" ], "personPhoto": [ { "serverIndexCode": "b0c6e000-091c-4144-a95d-cbea801812d2", "personPhotoIndexCode": "0f5fb936-3172-4a11-82ec-51356ff0be30", "picUri": "/pic?0df926994e9do-bel*41-e05*8o0=6=4705*9l5944279166*7t==312**ps8=1b3=07c2*135e71327-a5308d-2pi1e4o=00c50=805" } ] } ] } }用java如何获取到personPhoto里面的字段
可以使用 JSON 解析库,如 Jackson 或者 Gson,将 JSON 字符串解析成 Java 对象,然后通过对象的相应字段获取到 personPhoto 字段。假设使用 Jackson 库,代码如下:
```java
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
String jsonStr = "{ \"code\": \"0\", \"msg\": \"success\", \"data\": { \"total\": 1, \"list\": [ { \"personId\": \"3377634\", \"personName\": \"杨博\", \"gender\": 1, \"orgIndexCode\": \"13211331\", \"certificateType\": 111, \"certificateNo\": \"642223199811280016\", \"jobNo\": \"90223505\", \"birthday\": \"1998-11-28\", \"phoneNo\": \"18309540994\", \"email\": \"\", \"pinyin\": \"yangbo\", \"createTime\": \"2022-09-16T02:03:01.622+08:00\", \"updateTime\": \"2022-11-14T19:10:59.071+08:00\", \"faceNum\": 1, \"fingerprintNum\": 0, \"orgName\": \"宁夏宝丰能源集团股份有限公司信息化部\", \"orgPath\": \"@root000000@a1d7bcc3-7e73-4aa5-be78-e7448aed6111@13201129@13211280@13211331@\", \"orgPathName\": \"宝丰集团/员工同步组织/宁夏宝丰集团/宁夏宝丰能源集团股份有限公司/宁夏宝丰能源集团股份有限公司信息化部\", \"orgList\": [ \"13211331\" ], \"personPhoto\": [ { \"serverIndexCode\": \"b0c6e000-091c-4144-a95d-cbea801812d2\", \"personPhotoIndexCode\": \"0f5fb936-3172-4a11-82ec-51356ff0be30\", \"picUri\": \"/pic?0df926994e9do-bel*41-e05*8o0=6=4705*9l5944279166*7t==312**ps8=1b3=07c2*135e71327-a5308d-2pi1e4o=00c50=805\" } ] } ] } }";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonStr);
JsonNode personPhoto = jsonNode.at("/data/list/0/personPhoto");
System.out.println(personPhoto);
```
其中,`jsonStr` 是待解析的 JSON 字符串,`JsonNode` 是 Jackson 库中的 JSON 对象,`objectMapper` 是 Jackson 的解析器,`at` 方法是用来获取指定 JSON 节点的方法。运行上面的代码,会输出 `personPhoto` 字段的值,即:
```json
[ {
"serverIndexCode" : "b0c6e000-091c-4144-a95d-cbea801812d2",
"personPhotoIndexCode" : "0f5fb936-3172-4a11-82ec-51356ff0be30",
"picUri" : "/pic?0df926994e9do-bel*41-e05*8o0=6=4705*9l5944279166*7t==312**ps8=1b3=07c2*135e71327-a5308d-2pi1e4o=00c50=805"
} ]
```
阅读全文