UNPKG

json-as

Version:

The only JSON library you'll need for AssemblyScript. SIMD enabled

47 lines (38 loc) 1.12 kB
import { bs } from "../../../lib/as-bs"; import { JSON } from "../.."; import { BRACE_LEFT, BRACE_RIGHT, COLON, COMMA } from "../../custom/chars"; import { serializeArbitrary } from "./arbitrary"; import { serializeString } from "./string"; export function serializeObject(src: JSON.Obj): void { const srcSize = src.size; const srcEnd = srcSize - 1; if (srcSize == 0) { bs.proposeSize(4); store<u32>(bs.offset, 8192123); bs.offset += 4; return; } const keys = src.keys(); const values = src.values(); bs.growSize(2); store<u16>(bs.offset, BRACE_LEFT); bs.offset += 2; for (let i = 0; i < srcEnd; i++) { serializeString(unchecked(keys[i])); bs.growSize(2); store<u16>(bs.offset, COLON); bs.offset += 2; serializeArbitrary(unchecked(values[i])); bs.growSize(2); store<u16>(bs.offset, COMMA); bs.offset += 2; } serializeString(unchecked(keys[srcEnd])); bs.growSize(2); store<u16>(bs.offset, COLON); bs.offset += 2; serializeArbitrary(unchecked(values[srcEnd])); bs.growSize(2); store<u16>(bs.offset, BRACE_RIGHT); bs.offset += 2; }