杰克逊:InvalidDefinitionException 使用 [Ljava.lang.Double
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
参照the Java documentation for class file format,该值应该是正确的。
有人知道如何解决这个问题吗?
更新:
我使用“[L”是因为我想要一个 Double[].
的 class
根据 documentation,对象类型必须以分号结尾:
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}
我正在使用 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
参照the Java documentation for class file format,该值应该是正确的。
有人知道如何解决这个问题吗?
更新:
我使用“[L”是因为我想要一个 Double[].
根据 documentation,对象类型必须以分号结尾:
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}