将 json 对象映射到 java 对象(但我的 json 对象变量的首字母大写)

Map json object to java object (but my json object variables has first letter capital)

我有第三方 API 作为 JSON 对象给出响应,其变量首字母大写 我的 JSON 对象如下所示:

{
   "ApiStatus":{
      "ApiStatusCode":5000,
      "ApiMessage":"OK",
      "FWStatusCode":0,
      "FWMessage":""
   },
   "Encounter":{
      "EncounterId":"hgasfdjsdgkf",
      "ApiLinks":[
         {
            "Title":"Self",
            "Description":"Self referencing api",
            "ResourceName":"self",
            "HttpMethods":[
               "GET",
               "DELETE"
            ],
            "URL":"http://www.google.com/api/v2/test/test2/hchvjh"
         },
         {
            "Title":"Transmit a Report",
            "Description":"Create a report and transmit it.",
            "ResourceName":"transmitter",
            "HttpMethods":[
               "POST"
            ],
            "URL":"http://www.google.com/api/v2/test3/test3/jydgfkshd/transmitter"
         }
      ]
   }
}

如您所见,上面变量的第一个字母是大写的,需要将其映射到我的 java 对象 class 中,所以当我尝试使用 ObjectMapper 时,它不起作用.

MyJavaObject object = new ObjectMapper().readValue(jsonObject, MyJavaObject.class);

任何建议或帮助都会很棒。

您需要将 Jackson 的默认命名策略设置为 UpperCamelCaseStrategy,如下所示:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.UpperCamelCaseStrategy);
MyJavaObject object = objectMapper.readValue(jsonObject, MyJavaObject.class);

对于属性URLFWStatusCodeFWMessage,不遵循驼峰、蛇形或任何其他命名策略,您将需要使用@JsonProperty 在你的 class 属性上,以便 Jackson 知道如何处理它们。只需用相应的 @JsonProperty 注释 class 属性,它就会起作用:

  • @JsonProperty("URL")
  • @JsonProperty("FWStatusCode")
  • @JsonProperty("FWMessage")