[英]How to deserialize a JSON to an object ignoring a key using Jackson?
可以說我有一個JSON:
{
"MovieCount": 153,
"MoviesList": [{...},{...},...]
}
我有:
mapper.readValue(moviesListArrayString, new TypeReference<List<Movie>>(){});
但是當moviesListArrayString
為:
[{...},{...},...]
如果我的String
是原始JSON,如何告訴Jackson忽略MovieCount
並反序列化MoviesList
?
我將創建一個具有兩個屬性的包裝器對象:
Number movieCount
List<Movie> moviesList
然后,將值讀取為YourWrapperObject.class
並使用moviesList
屬性值執行任何操作,而忽略moviecount
屬性。
快速,非常丑陋但實用的示例
package test;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
String json = "{\"MovieCount\": 153,\"MoviesList\": [{},{}]}";
try {
List<Movie> movies = ((MovieWrapper) mapper.readValue(json, MovieWrapper.class)).moviesList;
System.out.println(movies.size());
}
catch (Throwable t) {
t.printStackTrace();
}
}
static class MovieWrapper {
@JsonProperty(value = "MovieCount")
int movieCount;
@JsonProperty(value = "MoviesList")
List<Movie> moviesList;
}
static class Movie {
}
}
輸出量
2
一種解決方案是將完整的JSON作為JsonNode讀取,然后僅反序列化您感興趣的內容:
final JsonNode node = mapper.readTree(...);
movieList = mapper.readValue(node.get("MoviesList").traverse(), typeRefHere);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.