使用JSON 的Jackson:解決「無法辨識的欄位」錯誤
使用Jackson 將JSON 字串轉換為Java 物件時,您可能會遇到如果JSON 中存在無法識別的字段,則會出現錯誤「無法識別的字段,未標記為可忽略」。為了解決這個問題,Jackson 提供了兩個選項:
JsonIgnoreProperties 註解
@JsonIgnoreProperties 註解允許您在反序列化過程中忽略 POJO 中的特定欄位。例如,在您的情況下,您可以忽略「包裝器」欄位:
@JsonIgnoreProperties(ignoreUnknown = true) class Wrapper { ... }
這將忽略任何無法識別的屬性,包括「包裝器」。
自訂反序列化器
如果您需要對忽略的屬性進行更精細的控制,您可以建立自訂反序列化器。重寫反序列化方法來處理無法辨識的欄位:
public class CustomDeserializer extends JsonDeserializer<Wrapper> { @Override public Wrapper deserialize(JsonParser parser, DeserializationContext context) throws IOException { Wrapper wrapper = new Wrapper(); ObjectCodec codec = parser.getCodec(); JsonToken token = parser.getCurrentToken(); while (token != JsonToken.END_ARRAY) { if (token == JsonToken.START_OBJECT) { Student student = codec.readValue(parser, Student.class); wrapper.getStudents().add(student); } token = parser.nextToken(); } return wrapper; } }
然後,向 Jackson 註冊自訂反序列化器:
ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new SimpleModule().addDeserializer(Wrapper.class, new CustomDeserializer()));
以上是使用 Jackson 反序列化 JSON 時如何處理「無法辨識的欄位」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!