java - jackson :使用 [Ljava.lang.Double 的 InvalidDefinitionException

标签 java data-binding jackson fasterxml

我正在使用 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}

关于java - jackson :使用 [Ljava.lang.Double 的 InvalidDefinitionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50466432/

相关文章:

java - 1916 年 7 月 3 日欧洲/莫斯科时区的 Joda DateTime 的奇数结果

ASP.NET ListBox DataBind 先前选定的值

c# - IsDirty 对 EF 实体使用 INotifyPropertyChanged

c# - 10000 多个 UI 元素,绑定(bind)还是绘制?

java - 为什么序列化/反序列化几何类型时 Jackson JSON 映射异常

java - Spring Doc swagger API 上的日期格式时间

java - JTabbedPane:避免在堆叠/Nimbus 时自动重新排序选项卡

java - 在启动器中创建第二个快捷方式

java - 从 cmd 启动 Java 应用程序有效,从批处理不

Android Proguard - Jackson 的 TypeReference 类中的 IllegalArgumentException