我有一个班级组织,只有很少的date
字段,如下所示。
public class Organization {
private String _id;
private String name;
@JsonDeserialize(using=JsonDateDeserializer.class)
@JsonSerialize(using=JsonDateSerializer.class)
private Date createdTime;
// getters and setters
}
为了在客户端以简单的方式处理日期,我将date
转换为long
,并使用这些JsonSerializer将其发送给客户端,如下所示
public class JsonDateSerializer extends JsonSerializer<Date>{
@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) throws IOException, JsonProcessingException {
gen.writeNumber(date.getTime());
}
}
我有一个endpoint,它将执行get organization并像下面这样在响应映射中插入结果。
@ApiMethod(name="organization.get", path="organizations/{organizationId}", httpMethod=HttpMethod.GET)
public Map<String, Object> organizationDetails(@Named("organizationId") String organizationId){
Organization org = DB.getOrganization("123");
Map<String, Object> response = new HashMap<String, Object>();
response.put("status", HttpServletResponse.SC_OK);
response.put("success", true);
response.put("entity", org);
return response;
}
但是我在客户端看到的最终结果JSON是
{
"status" : 200,
"entity" : [ {
"_id" : "966a03b3-8e46-41ee-b330-6533409b2b4a",
"name" : "POKURI",
"createdTime" : "2015-05-16T15:02:31.499+05:30"
} ],
"success" : true
}
这里的日期以某种形式出现,而不是很长。如果我使用JacksonObjectMapper
转换相同的数据,而不使用云endpoint,我将以预期的方式得到响应。为什么云endpoint不尊重Jackson注释?有没有办法配置它?
注意:即使我观察到,如果您使用云终结点,long
在客户端以字符串形式出现。我正在使用appEngine SDK 1.9.19
不应该在endpoint中使用Jackson注释(如果使用,则必须使用重新打包的版本,而不是您自己的版本)。您可以使用@ApiResourceProperty
或@ApiTransform
来做您想做的事情,这取决于您想要如何做。看到注释留档在这里。
关于long
,由于浮点不精确,它被序列化为字符串——不可能使用double精确地表示long的所有值,这是JavaScript和JSON.parse
将数字存储在中的内容,因此它始终作为字符串传输。我们的任何endpoint客户端库都会自动将它们转换为正确的数据类型。
我有两个实体 和 此映射: 最近增加了。 在运行应用程序时,应用程序崩溃,错误是:通过JDBC语句执行DDL“alter table documents add debt__idbigint not null”时出错 我检查了Hibernate发送到数据库的sql查询,它是:更改表文档添加debt_idbigint不null 此查询失败,因为表上已经有记录,因此无法添加不带默认值的不可为空列。 那
我希望将concur严格用作配置源。我正在使用spring cloud Consor配置来获取配置。我正在使用git2consul将文件加载到Consor并读取它们。根据spring云文档,我在构建中添加了以下内容。格拉德尔 并在我的application.properties 我面临的问题是,预期的属性没有加载到ConfigurationProperties bean中。在ConsultProp
问题内容: 在纯Java SE 6环境中: Eclipse控制台中未显示任何内容。 l.info(“”) 及以上的作品就好了,但低于任何 罚款 只是似乎没有工作。有什么问题吗?TIA。 问题答案: 即使Logger级别设置为ALL,ConsoleHandler(记录器上的默认Handler)仍然具有INFO的默认级别。这来自 JAVA_HOME / jre / lib中 的默认logging.pr
我正在使用本课程中的一个(稍加修改的)变通方法来获取userId,如果请求是从Android客户端发送的,则userId为空。 但我无法获取用户ID。 这个变通方法已经在其他项目中完美地工作了,所以问题一定在其他地方。My endpoints api使用以下范围、客户和受众进行了注释: 和是相同的。我没有使用web客户端,但Google告诉我添加web客户端ID。这个客户端id是否需要指定重定向U
如何注册一个新用户,而不通过管理员,keycloak提供了一个界面来注册一个新的用户URL,以便直接在浏览器中注册新用户: http://localhost:8080/auth/realms/myrealm/login-行动/注册?客户id=clientid 但我找不到注册的rest API的endpoint。我成功地使用admin rest API添加了一个用户,但我想注册一个新用户,但不提及a
我已经设置了Spark结构流(Spark 2.3.2)来阅读Kafka(2.0.0)。如果消息在Spark流作业开始之前进入主题,我无法从主题的开始消费。Spark streaming会忽略在初始运行Spark Stream作业之前产生的Kafka消息(即使使用。选项(“StratingoffSets”、“reasly”)),这是否是预期的Spark streaming行为? > 在开始流作业之前