簡體   English   中英

傑克遜:使用[Ljava.lang.Double的InvalidDefinitionException

[英]jackson: InvalidDefinitionException using [Ljava.lang.Double

我正在使用Jackson將以下json映射到Map<String, Class>

    {
    "keyA": "java.lang.Double",
    "keyB": "[Ljava.lang.Double"
    }

但是我收到以下異常:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.lang.Class`, problem: [Ljava/lang/Double

有關類文件格式 ,請參考Java文檔,該值應正確。

有誰知道如何解決這個問題?

更新:
我想使用Double []類時使用了[[L]。

根據文檔 ,對象類型必須以分號結尾:

ObjectType:
    L ClassName ;

更改keyB[Ljava.lang.Double;

String jsonInput = "{\n" +
  "    \"keyA\": \"java.lang.Double\",\n" +
  "    \"keyB\": \"[Ljava.lang.Double;\",\n" +
  "    \"keyC\": \"java.lang.Double\"\n" +
  "    }";
TypeReference<HashMap<String, Class>> typeRef
  = new TypeReference<HashMap<String, Class>>() {};
ObjectMapper mapper = new ObjectMapper();
Map<String, Class> map = mapper.readValue(jsonInput, typeRef);
System.out.println(map);

輸出:

{keyA=class java.lang.Double, keyB=class [Ljava.lang.Double;, keyC=class java.lang.Double}

暫無
暫無

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

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