zandaqo/structurae

Java Support?

jfuehner opened this issue · 1 comments

Was curious if it is possible to convert Java objects into a View and sent to browser for JavaScript consumption? Any examples?

Sure. View objects of fixed size are just raw buffers where data is laid out sequentially without any padding, pointers etc. For example, the following schema:

{
  $id: "Pet",
  type: "object",
  properties: {
    name: { type: "string", maxLength: 6 },
    age: { type: "number", btype: "uint8" },
  },
};

results in a buffer where 6 bytes of UTF8 string are followed by one byte integer, 7 bytes total. This sort of buffer or byte array can be created in any language supporting byte manipulations. In C/C++ one can just use structs with #pragma pack(1) directive to disable alignment. I am not sure what would be the easiest way of doing the same in Java, but it does have a number of primitives working with bytes, including ByteBuffer class, so something along the following lines should work:

...
  // get utf8 bytes of our name string;
  byte[] name = "Arthur".getBytes("UTF-8");
  // encode age as one byte
  byte age = 10;
  // allocate 7 bytes of buffer
  ByteBuffer buffer = ByteBuffer.allocate(7);
  // write the name at the beginning 
  buffer.put(name);
  // write age as the last byte
  buffer.put(6, age);
...