Java Google App Engine端点中的自定义JSON实体解析
我必须手动将一个非常特殊的JSON负载转换为POJO。我想我可以将JSON字符串放入一个Java Google App Engine端点中的自定义JSON实体解析,java,json,google-app-engine,Java,Json,Google App Engine,我必须手动将一个非常特殊的JSON负载转换为POJO。我想我可以将JSON字符串放入一个string实体: @ApiMethod( name = "postSomething", path = "postSomething/{id}", httpMethod = ApiMethod.HttpMethod.POST ) public void postSomething(@Named("id") Integer id, HttpServletRequest request, Strin
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...
}
执行此操作时,会出现一个错误:缺少参数名称异常:缺少参数名称。参数类型(类java.lang.String)不是实体类型,因此应使用@Named注释。
我试图使用一个@ApiTransformer
,但我得到了一个类似的错误
您能给我一个手动解析JSON内容的示例吗?错误消息说字符串数据需要有一个@Named注释,类似于整数id。我通过使用
集合s类来解决这个问题,而不是字符串和手动解析:
@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...
}
@ApiMethod(
name=“postSomething”,
path=“postSomething/{id}”,
httpMethod=ApiMethod.httpMethod.POST
)
public void postSomething(@Named(“id”)整数id,HttpServletRequest请求,HashMap数据){
//在这里解析每个数据项。。。
}
由此,我可以解析数据中的每个项目。这些值包含其他集合的层次结构(List
用于数组,Map
用于JSON实体)或String
用于实际值。因此,通过这样做,我不需要使用任何其他JSON解析库,如Jackson。字符串不是@Entity对象,因此如果没有适当的注释(如@Name或@Nullable),它不能作为参数(数据参数)传递给endpoints API。您必须将其从方法声明中删除,或者使用@Name或@Nullable对其进行注释。@Named仅用于URL参数,而不用于“实体”。我正在尝试解析请求的主体(内容)。