我有一个通过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) {...}