我必须手动将非常特殊的JSON有效载荷转换为Pojos。我以为我可以将JSON字符串放入String
实体:
@ApiMethod(
name = "postSomething",
path = "postSomething/{id}",
httpMethod = ApiMethod.HttpMethod.POST
)
public void postSomething(@Named("id") Integer id, HttpServletRequest request, String data) {
//Parse data here...
}
当我这样做时,我会收到一个错误:丢失ParameterNameException:丢失参数名称。参数类型(类Java.lang.string)不是实体类型,因此应用@Named注释。
我尝试使用 @ApiTransformer
,但我有类似的错误。
您能给我一个手动解析JSON内容的示例吗?
错误消息说字符串数据需要具有@Named注释,类似于整数ID。
我通过使用Collection
S类而不是String
和手动解析来解决这个问题:
@ApiMethod(
name = "postSomething",
path = "postSomething/{id}",
httpMethod = ApiMethod.HttpMethod.POST
)
public void postSomething(@Named("id") Integer id, HttpServletRequest request, HashMap<String,String> data) {
//Parse each item of data here...
}
从中,我可以在data
中解析每个项目。这些值包含其他集合的层次结构(数组的List
,JSON实体的Map
)或String
用于实际值。因此,通过这样做,我无需使用任何其他JSON解析库,例如Jackson。
字符串不是@entity对象,因此如果没有正确的注释,就无法将其作为参数(数据参数)传递到端点API(例如@name或@nullable)。您必须从方法声明中删除它,或者用@name或@nullable进行注释。