2017-04-26 50 views
0

我有一個接受JSON作爲正文請求的Java API(其餘)。 我需要將主體映射到一個java類,但其中一個JSON屬性是JSON本身,我無法預測其結構。POST JSON與JSON屬性到Java API休息

例如,這是資源:

@POST 
public void paymentInfo(PaymentInfoEntity paymentInfoEntity) 
throws JsonGenerationException, JsonMappingException, IOException { 
    ... 
} 

這是一個JSON例如:

{ 
    progressive: 123, 
    params: { [another valid JSON node] } 
} 

這是我怎麼想的實體:

public class PaymentInfoEntity { 
    public Integer progressive; 
    public JsonNode params; 
} 

隨着這種配置,我有這個錯誤:

org.codehaus.jackson.map.JsonMappingException: Can not construct instance of com.fasterxml.jackson.databind.JsonNode, problem: abstract types can only be instantiated with additional type information

如果我聲明BaseJsonNode params而不是JsonNode params,則會出現同樣的錯誤。

如果我聲明,而是Object params,它的工作原理。 我該如何解析一個JSON呢?在這種情況下,params.toString()的格式是{key1=stringvalue1, key2=stringvalue2}而不是{key1: "stringvalue1", key2: "stringvalue2"}

哪個是實現我的目標的最佳選擇? 謝謝!

回答

0

JsonNode是一種抽象類型。嘗試使用BaseJsonNode 或java.util.Map

+1

正如我寫的,我也試過BaseJsonNode,結果相同。 Map 似乎可行,謝謝。然後我使用新的ObjectMapper()獲取JSON對象。writeValueAsString(paymentInfoEntity.getParams())。 –