flashport/json-marshaller

A simple JSON Marshaller/Unmarshaller library.

v0.0.13 2025-01-31 14:58 UTC

This package is auto-updated.

Last update: 2025-06-29 02:08:19 UTC


README

This lib provides marshalling and unmarshalling functionality, allowing JSON strings to be cast into objects or vice versa.

Usage:

Object example:

class Person{

    // It supports custom property names
    #[JsonProperty("fullName")]
    public string $name;
    
    // It also supports validation attributes
    #[JsonValidateRequired]
    public string $email;
    
    // Equals can be a single value or an array
    #[JsonValidateEquals(["active", "inactive"])]
    public string $status;
    
    // It is necessary to define the array type
    #[JsonPropertyType(Address::class)]
    public array $addresses;
    
    // For array with scalar types
    #[JsonPropertyType(ScalarTypes::INTEGER)]
    public array $luckyNumbers;
    
    // The type can be inferred from the property, or from the attribute.
    // At least one is required
    public Address $billingAddress;
    
    #[JsonPropertyType(Address::class)]
    public $shippingAddress;
}

Marshalling:

$json = new \JsonMarshaller\JsonMarshaller();
$jsonString = $json->marshal($myObject);

Unmarshalling:

$json = new \JsonMarshaller\JsonMarshaller();
$person = $json->unmarshal($jsonString, Person::class)