преобразовать схему json в схему flatbuffer

Есть ли способ преобразовать схему JSON в схему Flatbuffer? Вариант использования здесь: пользователь может создать схему JSON, но я нахожу способ преобразовать схему JSON в Flatbuffer.

Пример: Ввод

 {
  "$schema": "http://json-schema.org/draft-04/schema#",
  "definitions": {
    "MyGame_Sample_Color": {
      "type": "string",
      "enum": [
        "Red",
        "Green",
        "Blue"
      ]
    },
    "MyGame_Sample_Monster": {
      "type": "object",
      "properties": {
        "mana": {
          "type": "number"
        },
        "hp": {
          "type": "number"
        },
        "name": {
          "type": "string"
        },
        "friendly": {
          "type": "boolean"
        },
        "inventory": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "color": {
          "$ref": "#/definitions/MyGame_Sample_Color"
        }
      },
      "additionalProperties": false
    }
  },
  "$ref": "#/definitions/MyGame_Sample_Monster"
}

Вывод:

namespace MyGame.Sample;
enum Color:byte { Red = 0, Green, Blue = 2 }
table Monster {
  mana:short = 150;
  hp:short = 100;
  name:string;
  friendly:bool = false (deprecated);
  inventory:[ubyte];  // Vector of scalars.
  color:Color = Blue; // Enum.
}
root_type Monster;

Я знал, что обратный путь доступен. Но я не знаю, как преобразовать схему JSON в схему плоского буфера.


person Syed Abdul Kather    schedule 06.04.2018    source источник
comment
Я не знаю автоматизированного способа сделать это, нет.   -  person Aardappel    schedule 06.04.2018


Ответы (1)


Я собрал наивный преобразователь, который использую с выводом genson с разной степенью успеха. Однако это может быть хорошей отправной точкой: https://gist.github.com/romanbsd/da181151170e396e8e36a6576f045aa2

person Roman    schedule 03.04.2021