如何获取特定的json值并将其存储在具有特定模式的表中。
例如我试过
def save_to_payment(conn,result) do
Poison.decode!(result, as: %Payments.payment{} )
end
使用此架构,
schema "payment" do
field :payment_id, :string
field :state, :string
field :amount, :decimal
timestamps()
end
然而,实际的Json有很多字段,我只需要很少的字段..
我需要将我想要的字段映射到模式,以便将它们保存在数据库中
答案 0 :(得分:1)
我只是将原始解码的Map传递给Payment.changeset/2
并让它处理删除额外的字段并根据需要进行类型转换:
json = "{\"state\":\"CA\",\"payment_id\":1,\"go\":\"here\",\"extra\":\"fields\",\"amount\":123}"
decoded = Poison.decode!(json)
changeset = Payment.changeset(%Payment{}, decoded)
# You can now `Repo.insert!(changeset)` or use it in forms etc.