我正在使用Google云端点进行休息服务。我正在使用RestyGWT在GWT Web客户端中使用此数据。
我注意到云端点自动用双引号括起一个长数据类型,当我尝试将JSON转换为POJO时,它会在RestyGWT中导致异常。
这是我的示例代码。
@Api(name = "test")
public class EndpointAPI {
@ApiMethod(httpMethod = HttpMethod.GET, path = "test")
public Container test() {
Container container = new Container();
container.testLong = (long)3234345;
container.testDate = new Date();
container.testString = "sathya";
container.testDouble = 123.98;
container.testInt = 123;
return container;
}
public class Container {
public long testLong;
public Date testDate;
public String testString;
public double testDouble;
public int testInt;
}
}
这是云终点返回的JSON。您可以看到testLong被序列化为“3234345”而不是3234345。
我有以下问题。 (1)如何删除长值中的双引号? (2)如何将字符串格式更改为“yyyy-MMM-dd hh:mm:ss”?
此致 沙迪亚
答案 0 :(得分:1)
您使用的是什么版本的restyGWT?你试过1.4快照吗? 我认为这是代码(1.4)负责在restygwt中解析一个长的,它可能对你有帮助:
public static final AbstractJsonEncoderDecoder<Long> LONG = new AbstractJsonEncoderDecoder<Long>() {
public Long decode(JSONValue value) throws DecodingException {
if (value == null || value.isNull() != null) {
return null;
}
return (long) toDouble(value);
}
public JSONValue encode(Long value) throws EncodingException {
return (value == null) ? getNullType() : new JSONNumber(value);
}
};
static public double toDouble(JSONValue value) {
JSONNumber number = value.isNumber();
if (number == null) {
JSONString val = value.isString();
if (val != null){
try {
return Double.parseDouble(val.stringValue());
}
catch(NumberFormatException e){
// just through exception below
}
}
throw new DecodingException("Expected a json number, but was given: " + value);
}
return number.doubleValue();
}