Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

JSON Format

# rpc_format.nim

{.push raises: [], gcsafe.}

import
  json_serialization

export
  json_serialization

createJsonFlavor RpcConv,
  automaticObjectSerialization = false,
  automaticPrimitivesSerialization = true,
  requireAllFields = false,
  omitOptionalFields = true, # Skip optional fields==none in Writer
  allowUnknownFields = true,
  skipNullFields = true # Skip optional fields==null in Reader

type
  UserInfo* = object
    name*: string
    bio*: string

UserInfo.useDefaultSerializationIn RpcConv

type
  UploadData* = object
    path*: string
    public*: bool

proc readValue*(
    reader: var RpcConv.Reader, value: var UploadData
) {.gcsafe, raises: [IOError, SerializationError].} =
  let path = reader.readValue(string)
  value = UploadData(path: path, public: false)

proc writeValue*(
    writer: var RpcConv.Writer, value: UploadData
) {.gcsafe, raises: [IOError].} =
  writer.writeValue value.path