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
Parameter | Type |
---|---|
type | T |
name | Name |
Returns
TransformType
<T
, BrandType
<Type
<"String"
, string
, string
, StringError
, string
, StringError
>, Name
,
| JsonValueFromStringError
| T
["Errors"
], StringError
>>