我正在使用JacksonPolymorphicDeserialization,这是我的代码,它反序列化为基于'type'属性的正确类:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type",
defaultImpl = Event.class,
visible = true)
@JsonSubTypes({
@Type(value = SpecialEvent1.class, name = "SPECIAL_EVENT_1"),
@Type(value = SpecialEvent2.class, name = "SPECIAL_EVENT_2"),
})
public abstract class AbstractEvent {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好,我的json根据'type'值变成了预期的类.
但是,我正在考虑将'type'属性从String移动到Enum,这是我的新代码:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type",
defaultImpl = Event.class,
visible = true)
@JsonSubTypes({
@Type(value = SpecialEvent1.class, …
Run Code Online (Sandbox Code Playgroud) 我有一个关于映射Instant
到 PostgreSQL 的最佳实践问题TIMESTAMP
。
我们已将应用程序更新到 Java 15,系统时钟的新增强功能为纳秒精度 ( https://bugs.openjdk.java.net/browse/JDK-8242504 ) 与 Postgres 中的 TIMESTAMP 限制不兼容。时间根据底层操作系统的不同而不同,Mac (Big Sur) 中的 Instant 不提供以纳秒为单位的时间,但 Linux 中提供。
我们在代码库中使用即时类型。我们的测试正在比较内存中的 Instant 类型的对象与获取的对象,因此它们会失败,具体取决于它们运行的操作系统。
在Linux中,内存中的Instant对象的精度为纳秒,而Postgres存储的Instant(TIMESTAMP)的精度为微秒。断言失败:
java.lang.AssertionError: expected [2021-01-04T19:32:23.726475249Z] but found [2021-01-04T19:32:23.726475Z]
Run Code Online (Sandbox Code Playgroud)
在 Mac 中,Instant 对象的精度为微秒,与 Postgres 的时间戳精度充分一致,因此测试会像迄今为止所做的那样通过。
我们希望避免截断 Instant 或向 PG 添加插件来支持纳秒。
其他人如何以稳健、全面的方式处理这个问题?
我正在用Ruby创建一个JSON文件.我需要在JSON文件中创建对象"companies".
预期结果:
{"companies":[
{\"label\":\"Wayfair \",\"values\":[54]},
{\"label\":\"Move24 \",\"values\":[29]},
{\"label\":\"Auto1 \",\"values\":[23]},
...
]}
Run Code Online (Sandbox Code Playgroud)
我得到了什么:
[
"{\"label\":\"Wayfair \",\"values\":[54,54]}",
"{\"label\":\"Move24 \",\"values\":[29,29]}",
"{\"label\":\"GetYourGuide \",\"values\":[28,28]}",
"{\"label\":\"Auto1.com \",\"values\":[20,20]}", ...
]
Run Code Online (Sandbox Code Playgroud)
我的代码:
data_hash = data_hash.map {|k,v| {label: k, values: v}}
companies_json = []
data_hash.each do |hash|
companies_json << hash.to_json
end
File.open('companies.json', 'w') do |f|
f << companies_json
end
Run Code Online (Sandbox Code Playgroud) 我是RoR的新手,我正在练习模特和协会.
我用belongs_to关联创建了两个模型.当我尝试通过Rails控制台创建其中一个模型的对象时,我得到一个回滚事务,我不知道为什么.所有帮助将不胜感激!
我已成功创建用户:
=> #<User id: 1, name: "Jen", created_at: "2016-12-04 17:48:33", updated_at: "2016-12-04 17:48:33">
Run Code Online (Sandbox Code Playgroud)
当我尝试创建一个Post对象时,我得到了这个:
2.3.0 :012 > post = Post.create(body: "hola soy un post nuevo")
(0.2ms) begin transaction
(0.1ms) rollback transaction
=> #<Post id: nil, user_id: nil, body: "hola soy un post nuevo", created_at: nil, updated_at: nil>
Run Code Online (Sandbox Code Playgroud)
models/user.rb>
class User < ApplicationRecord
has_many :posts
end
Run Code Online (Sandbox Code Playgroud)
models/post.rb>
class Post < ApplicationRecord
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
db/schema.rb>
ActiveRecord::Schema.define(version: 20161204174201) do
create_table "posts", force: :cascade do |t|
t.integer "user_id"
t.text "body"
t.datetime …
Run Code Online (Sandbox Code Playgroud) model-view-controller activerecord ruby-on-rails associations models
java ×2
json ×2
activerecord ×1
associations ×1
jackson ×1
java-15 ×1
java-time ×1
models ×1
parsing ×1
polymorphism ×1
postgresql ×1
ruby ×1