我很难用Java处理下面的JSON,这是从外部Ansible剧本返回的:{"Sample": { "tag_description":"abc","tag_category_id":"def","tag_id":"ghi" }, "Sample1": { "tag_description":"jkl","tag_category_id":"mno","tag_id":"pqr" } }我已经能够使用自定义反序列化器成功解析JSON的一个部分,尽管它仅能获得第一部分。任何想法都将受到高度赞赏。@JsonComponentpublic class TagSerializer extends JsonDeserializer<Tag> {@Overridepublic Tag deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); JsonFactory factory = mapper.getFactory(); JsonNode treeNode = jsonParser.getCodec().readTree(jsonParser); Iterator<Map.Entry<String, JsonNode>> fields = treeNode.fields(); String name = ""; // collect the tag name Map.Entry<String, JsonNode> entry = fields.next(); name = entry.getKey(); // now that we have the tag name, parse it as a separate JSON object JsonNode node = entry.getValue(); // get the values from the JSON String description = node.get("tag_description").asText(); String category_id = node.get("tag_category_id").asText(); String tag_id = node.get("tag_id").asText(); return new Tag(name, category_id, description, tag_id);}}我从Spring Boot REST API端点调用该方法,而我的“标签”模型是Spring实体
2 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
如果您使用的是Spring MVC,请在引用时考虑明确声明所需的类型,@RequestBody然后让框架为您完成工作
@PostMapping(value="/store", consumes = APPLICATION_JSON_VALUE)
public void tagJson(@RequestBody Map<String, Tag> json) {
// Do not mess with ObjectMapper here, Spring will do the thing for you
}
添加回答
举报
0/150
提交
取消