Deserializer

Deserializer is a tool designed by rml, which is used to deserialize Json to the target object.

Array unpacking

For a given JsonElement, Deserializer will do the following:

  • If both the given type and JsonElement are arrays, deserialize to an array.

  • If the given type is an array, but the JsonElement is not, deserialize to an array with only one content.

  • If the given type is not an array, deserialize to the given type.

For example, in a field specified as an integer array, the following formats are equivalent:

{"demo":1}
{"demo":[1]}

Free combination

Deserializer has built-in and registered default deserializers for basic types, and rml adds many custom deserializers for customized types.

For a specific type, if json is not a JsonObject, the default deserializer is applied, otherwise the deserializer specified in the type field is used. If the field does not exist, the default is still used.

For example, for a field that expresses an integer, the default google:primitive can be used, or rml:random_int can be used. They can also be mixed in an array to achieve free combination of components.

{
  "demo":[
    {
      "type": "rml:random_int",
      "random": {
        "type": "minecraft:price",
        "min": {
          "type": "rml:random_int",
          "random": {
            "type": "cvh:poisson_distribution",
            "lambda": 5,
            "min": 7,
            "max": 21
          }
        },
        "max": 22
      }
    },
    9
  ]
}

All documented Types:

Integer

RandomIntSupplier

ResourceLocation

IVillager

ITradeList

ItemStack

EnchantmentData

TagOre

ModuleType