Java 如何在端点类上实现自定义@JsonDeserialize方法?

Java 如何在端点类上实现自定义@JsonDeserialize方法?,java,google-app-engine,jquery,google-cloud-endpoints,Java,Google App Engine,Jquery,Google Cloud Endpoints,我有一个类,其中有一个自定义反序列化器注释: @JsonDeserialize(using = ConvertToNullDeserializer.class) public void setObject(Integer pObj) { this.pObj = pObj; } 当此对象通过ajax发送到云端点时,我希望启动自定义反序列化程序,但我只得到: { "error" : { "message" : "com.google.appengine.repackaged.org.c

我有一个类,其中有一个自定义反序列化器注释:

@JsonDeserialize(using = ConvertToNullDeserializer.class)
public void setObject(Integer pObj) {
    this.pObj = pObj;
}
当此对象通过ajax发送到云端点时,我希望启动自定义反序列化程序,但我只得到:

{
  "error" : {
"message" : "com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.lang.Integer from String value 'null': not a valid Integer value\n at [Source: N/A; line: -1, column: -1] (through reference chain: 
"code" : 400,
"errors" : [ {
  "domain" : "global",
  "reason" : "badRequest",
  "message" : "com.google.appengine.repackaged.org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.lang.Integer from String value 'null': not a valid Integer value\n at [Source: N/A; line: -1, column: -1] (through reference chain: 
   } ]
 }
}

谢谢

@JsonDeserialize
在端点中不受支持,但您可以使用

标记要转换的类:

import com.google.api.server.spi.config.ApiTransformer;

@ApiTransformer(BarTransformer.class)
public class Bar {
  private final int x;
  private final int y;

  public Bar(int x, int y) {
    this.x = x;
    this.y = y;
  }

  public int getX() {
    return x;
  }

  public int getY() {
    return y;
  }
}
变压器示例:

import com.google.api.server.spi.config.Transformer;

public class BarTransformer implements Transformer<Bar, String> {
  public String transformTo(Bar in) {
    return in.getX() + "," + in.getY();
  }

  public Bar transformFrom(String in) {
    String[] xy = in.split(",");
    return new Bar(Integer.parseInt(xy[0]), Integer.parseInt(xy[1]));
  }
}
import com.google.api.server.spi.config.Transformer;
公共级变压器{
公共字符串转换为(条形输入){
在.getX()中返回“+”,在.getY()中返回“+”;
}
公共栏转换源(字符串输入){
字符串[]xy=in.split(“,”);
返回新条(Integer.parseInt(xy[0]),Integer.parseInt(xy[1]);
}
}

我不确定我是否完全理解您的问题,云端点通常会为您处理序列化和反序列化。也许@JsonDeserialize注释不是您想要采用的路径,因为通过端点,您可以将与json相关的内容委托给系统。反序列化程序的作用是什么?这适用于大多数情况,但在动态json请求破坏模型(即,可以是字符串或对象的字段)时失败