簡體   English   中英

Java:如何創建參數化的Jackson Json到對象函數

[英]Java: How to Create Parameterized Jackson Json to Object Function

我正在嘗試將對象序列化為json和從json反序列化。 我試圖用靜態方法創建一個類,該方法通常會在給定類的情況下完成此操作。

public static <T> T jsonToObject(String json, Class<T> tClass) {
    try {
        return mapper.readValue(json, tClass);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

然后在單元測試中:

@Test
public void testUserDataSerialization() {

    UserData userData = new UserData
        .Builder("david@davidgeorgewilliams.com")
        .firstName("david")
        .lastName("Williams")
        .build();

    String userDataJson = JsonUtils.objectToJson(userData);

    String userDataJson1 = JsonUtils.objectToJson(userData1);

    System.out.println(userDataJson + "\n" + userData1);
} 

這個異常炸死了

Running com.company.app.UserDataJsonTest
org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class com.company.app.model.UserData]: can not instantiate from JSON object (need to add/enable type information?)
at [Source: java.io.StringReader@76ba6b2; line: 1, column: 2]
at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:746)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:683)

我在這里做錯什么以及如何解決? 我的想法是我想從發布請求正文中接受JSON,然后將其轉換為相應的對象。

您需要使用TypeReference來處理泛型的類型擦除。 查閱文檔 (“使用泛型進行數據綁定”部分)。 TypeFactory也可以。

答案如上所述。

暫無
暫無

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

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