我有一个通过REST WebService传递的JSON数据:

"dimension": {
    "@type": "com.example.multi.MultiDimension",
    "listId": "tempListId1",
    "key": "PERN",
    "displayName": "Personal"
  }


现在,MultiDimension是Singleton类,即具有私有构造函数。
因此,杰克逊(Jackson)无法找到公共构造函数,并给出了解析错误。

No suitable constructor found for type [simple type, class com.example.multi.MultiDimension]: can not instantiate from JSON object (need to add/enable type information?)\n at [Source: org.apache.cxf.transport.http.AbstractHTTPDestination$1@404e8aba; line: 8, column: 9]


好吧,然后我在MultiDimension类中添加了一个公共构造函数,并按预期工作。

我担心的是,我从Singleton类中将其打开,这是他们仍然可以拥有Singleton类的任何方式,而Jackson Mapper可以映射该类以指定方法名称,即该类中的getInstance()

最佳答案

您可以使用@jsonCreator,并且可以像这样传递参数。

@JsonCreator
public static MultiDimension getInstance(@JsonProperty("key") String key) {...}

09-10 06:37