Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Google App Engine端点中的自定义JSON实体解析_Java_Json_Google App Engine - Fatal编程技术网

Java Google App Engine端点中的自定义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

我必须手动将一个非常特殊的JSON负载转换为POJO。我想我可以将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...
}
执行此操作时,会出现一个错误:缺少参数名称异常:缺少参数名称。参数类型(类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参数,而不用于“实体”。我正在尝试解析请求的主体(内容)。