zivkovicp

zivkovicp

How to use JSON Schema to create Ecto schema and changesets?

I’m new to Elixir and Phoenix and I’ve been trying to prototype a difficult solution before committing to Phoenix for my new app, but I’m coming up empty handed and need some help!

I need to build dynamic forms using JSON Schema, and I’d prefer to do it in the backend to take advantage of LiveView and server side validation.

My idea was to convert between JSON Schema and Ecto schema/changeset so I could build and validate forms using the server. Every variation of the form has at least 3 unchanging fields and the rest can be saved as JSON in the database. Does this even make sense to do or should I just leverage some front end JS framework that already has support for JSON schema/forms and a rest api?

So far I’ve tried leveraging json_xema, xema, and also failed to build a macro to define a dynamic module with the fields from the JSON Schema (which might be the best solution?)… I’m totally stuck.

In PHP or Python I could probably use a form builder to get this done, but I’m out of my element with Elixir and any sample code, pointers, links to tutorials or docs are appreciated.

Pete

Most Liked

marciol

marciol

Are you aware of Schemaless Changesets? It allows the use of schemas from pure data.

egze

egze

Wondering how successful were you at your task? We now need to do the same at work.

Do you have any tips or code examples?

Last Post!

zivkovicp

zivkovicp

Hi, sorry for the slow reply but I did not find a solution at the time and ended up using PHP for the project because of familiarity and tooling.

My feeling is that a change of mindset was needed to make it work, and unfortunately I did not have enough time to explore.

Where Next?

Trending in Questions Top

lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
tj0
I’ve been following the steps here for the upgrade from 1.6 to 1.7 and it has gone relatively smoothly all the way till the phoenix_view ...
New
cgraham
Hi! What is currently the best library/method for parsing text and tabular data out of PDF files in Elixir or Erlang?
New
stefanchrobot
Hi, I need a way to handle data migrations in my application. I found an article by @wojtekmach about manual migrations: Automatic and ma...
New
stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
kip
Localize is the next generation localisation library for Elixir. Think of it as ex_cldr version 3.0. The first version will be released ...
New
webofbits
Squid Mesh is an open source workflow automation runtime for Elixir applications. It is aimed at Phoenix and OTP apps that want to defin...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
kip
In 2021 I started a new library called Tempo with the objective of modelling time as a set of intervals - not as instants. In 2022 I gave...
New

We're in Beta

About us Mission Statement