我已经开始用Elixir和Phoenix编写一个应用程序,但我有点失落。
基本上,应用程序将收到一个复杂的JSON,我需要对其进行验证并将其保存在数据库中。
这样的事情:
我的json:
{
"id": 42,
"name": "Alan",
"address": {
"universe": "C-137"
}
}
我的表
| id | person_id | data |
| # | 42 | {"id": 42,"name": "Al... |
问题是我不知道如何验证JSON。
我正在寻找变更集,但我不知道如何使用它来验证嵌套对象的JSON。
我想做这样的事情:
defmodule Foo.Person do
import Ecto.Changeset
def types("person") do
%{id: :integer, name: :string, address: types("address")}
end
def types("address") do
%{universe: :string}
end
def changeset(data) do
{data, types("person")}
|> cast(data, Map.keys(types("person")))
# |> other validation rules ...
end
end
我只使用 Schema 实现此目标,但我不想在我的数据库中单独保存JSON的每个部分。
有人知道是否有一些技巧可以做到吗?