簡體   English   中英

Spring 中的復雜 Json 映射與 RestTemplate

[英]Complex Json Mapping in Spring with RestTemplate

我正在嘗試使用我的 Java 實體 class 對 map 進行 jsonResponse。 json 響應如下所示

   "classResults":{
      "classSuggestion":[
          "classA",
          {
            "section":"section c"
          }
      ]
    }
    

我用於映射的 Java Class 可能看起來像這樣。 我將有一個 object 的 ClassSuggestion,以便 map classSuggestion object。 但是,classSuggestion 將如何保存上述 json 數據?

public class ClassResults {

   ClassSuggestion classSuggestion

}

我的 ClassSuggestion 會如何?

public class ClassSuggestion {

   String classes
   String section
}

我如何 map 這個到 Java Class 或數據類型?

@Data // lombok
public class ClassResults {
   private List<ClassSuggestion> classSuggestion; // mapped from array
}

@Data
@NoArgsConstructor
public class ClassSuggestion {
   private String classes;
   private String section;
   public ClassSuggestion(String classes) {
     this.classes = classes; //Handle string "classA"
   }
}

我通過編寫自定義反序列化器解決了這個問題:

class ClassSuggestionDeserializer extends StdDeserializer<Employee> {

   @Override
   public Map<String, String> deserialize(JsonParser jp, DeserializationContext dc) throws IOException, JsonProcessingException {
      ObjectCodec codec = jp.getCodec();
      TreeNode node = codec.readTree(jp);
      JsonNode classResults = node.get("classResults");
      // and finally iterating through the classResults to get string values
   }
}

同時在數據 class 上,使用自定義反序列化器使用 JsonDeserialize。

@JsonDeserialize(using=ClassSuggestionDeserializer.class)
public class ClassSuggestion {

   Map<String, String> classResults;

 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM