FAQ
Which languages are supported?
Java, TypeScript and Go, each following that language naming convention.
Are nested objects turned into their own classes?
Yes. Nested objects and arrays of objects generate child classes automatically.
How are field types decided?
From the literal value: quoted means string, true/false boolean, decimals float, [] array, {} object. A quoted 123 therefore becomes a string, not a number.
About this tool
The input must be a JSON object (root is {}). An array or a bare string is rejected with a message, because generating entity classes requires a named root type and an array root has no name to use.
Each target follows its own conventions: Java emits public class with private fields and getters/setters, PascalCase class names and camelCase fields; TypeScript emits export interface; Go emits type X struct with capitalised field names (Go requires them to be exported) plus a json:"originalKey" tag to preserve the original key — without that tag, renaming the field breaks deserialisation.
Nested objects become their own class, objects inside arrays become "key + Item", and duplicate class names are not generated twice. Types come only from the literal: string → String/string, boolean → Boolean/boolean, integer → Integer/int, decimal → Double/float64, array → List<T>/T[], null → Object/any.
That rule has side effects worth knowing up front: a quoted 123 is a string, 1.0 is inferred as a float, and null gives no real type. It therefore suits the case where you already have a real API response: generate the skeleton from live data, then hand-fix the any, Object and money fields (BigDecimal or double?). To skip that step, have the server describe types in a JSON Schema.