tree: f853a291c37a2886ff00314e8ed25bb2b2cff534 [path history] [tgz]
  1. lib/
  2. analysis_options.yaml
  3. pubspec.yaml
  4. README.md
pkgs/json_syntax_generator/README.md

JSON Syntax Generator

package:json_syntax_generator provides a powerful and flexible way to generate Dart code from JSON schemas. It simplifies the process of working with JSON data by automatically creating Dart classes that represent the structure of your JSON data, including support for complex schema features.

Features

This package is designed to handle a wide range of JSON schema features, including:

  • Naming Conventions: Converts snake-cased keys from JSON schemas to camel-cased Dart names, following Effective Dart guidelines.
  • Optional and Required Fields: Generates Dart constructors and getters with correct nullability based on the required property in the JSON schema.
  • Subclassing: Automatically recognizes and generates Dart subclasses from JSON schemas that use allOf to reference other definitions.
  • Tagged Unions: Handles tagged unions defined using if, properties, type, const, and then in the schema, generating appropriate Dart class hierarchies.
  • Open Enums: Interprets JSON schemas with anyOf containing const values and type: string as open enums, generating Dart classes with static const members for known values and support for unknown values.

How It Works

package:json_syntax_generator operates as a pipeline with two steps:

  1. Schema Analysis: The SchemaAnalyzer class analyzes a JSON schema and extracts relevant information. It makes decisions about how code should be generated and encodes them in a SchemaInfo object. This includes determining class names, property types, inheritance relationships, and other schema features.
  2. Code Generation: The SyntaxGenerator class takes the SchemaInfo object and generates the corresponding Dart code. This code includes class definitions, constructors, getters, and setters, all tailored to the specific structure and requirements of the JSON schema.