Data to Class

Convert JSON or XML data to class/struct/interface definitions in TypeScript, Python, Go, Java, C#, Swift, Kotlin, Rust, Dart, JSON Schema, Ruby, C++ and more. Also: CSS Tools | HTML Tools | XML Tools | YAML Tools | All JSON Tools | JSON Schema Validator | JSON Viewer / Editor | JSONPath Evaluator | JSON → SQL / TOML | JSON Formatter.
All processing happens locally in your browser — your data is never uploaded to any server.
Input:
Language:
Naming:
How to use: Choose input format (JSON or XML), paste your data in the left textarea, pick a target language, and click Convert (or just type — auto-converts on input).
Batch merge: Paste multiple JSON objects (newline-separated or array) to automatically merge fields from all samples for richer type inference.
Enum detection: String fields with 2–10 distinct values are auto-detected as enums and shown in the stats panel. JSON Schema output includes enum constraints.
Naming style: Override language defaults with Auto (language convention), camelCase, PascalCase, or snake_case.
TypeScript: Generates interface definitions with proper types, optional markers (?), and array types.
Python: Generates @dataclass classes with full type hints (List, Optional).
Go: Generates struct definitions with json:"key" tags and exported field names.
Java: Generates POJOs with @JsonProperty annotations and getter/setter methods.
C#: Generates classes with [JsonPropertyName] attributes and auto-properties.
Swift: Generates Codable structs with CodingKeys enum when needed.
Kotlin: Generates data class with Jackson @JsonProperty annotations. Fields default to null. Arrays use List<T>. Nullable types use ? suffix.
Rust: Generates struct with #[derive(Debug, Clone, Serialize, Deserialize)] and #[serde(rename)] attributes. Fields in snake_case. Optional uses Option<T>. Arrays use Vec<T>.
Dart: Generates class with manual fromJson()/toJson() methods. Field names in camelCase. Nullable fields use ?. Arrays use List<T>.
JSON Schema: Generates JSON Schema (Draft 7) with $schema, definitions, and $ref references. Includes required arrays and enum constraints for detected enums.
Ruby: Generates Ruby classes with attr_accessor, initialize, self.from_json, and to_json. Field names in snake_case.
C++: Generates C++ struct with nlohmann/json to_json() and static from_json() methods. Uses std::shared_ptr, std::vector, field names in snake_case.
XML input: Parsed into JSON-like structure first. Repeated elements become arrays, nested elements become objects, empty elements become null. Attributes inferred as typed fields.
From sample data to type definitions

A class, struct or interface is a compile-time contract: field names plus types. Generating one from sample data is inference, not truth — a field absent from the sample is unknown, not absent; a value seen once as 2 becomes an integer even if 2.5 shows up later. Merge several samples for richer inference, then review optionality and enums by hand.