API Reference / @evolu/common / Type / json

Function: json()

function json<T, Name>(type, name): TransformType<T, BrandType<Type<"String", string, string, StringError, string, StringError>, Name, 
  | JsonValueFromStringError
| T["Errors"], StringError>>;

Defined in: packages/common/src/Type.ts:3698

Creates a transform Type that serializes a given Type into a branded JSON string. The transformation is reversible, ensuring that we can safely parse it back.

Example

const Person = object({
  name: NonEmptyString50,
  age: FiniteNumber,
});
type Person = typeof Person.Type;

const PersonJson = json(Person, "PersonJson");
// string & Brand<"PersonJson">
type PersonJson = typeof PersonJson.Type;

// Person -> string & Brand<"PersonJson">
const personJson = PersonJson.from({ name: "Alice", age: 30 });
expect(personJson).toEqual(ok('{"name":"Alice","age":30}'));

// string & Brand<"PersonJson"> -> Person
const person = PersonJson.to(personJson);

// serialize/parse any JSON value
const AnyJson = json(JsonValue, "AnyJson");

Type Parameters

Type Parameter
T extends AnyType
Name extends string

Parameters

ParameterType
typeT
nameName

Returns

TransformType<T, BrandType<Type<"String", string, string, StringError, string, StringError>, Name, | JsonValueFromStringError | T["Errors"], StringError>>

Was this page helpful?