Read keys of table as string as this is only valid json, but convert them if needed

This commit is contained in:
Alexander Ivanov 2020-05-08 16:12:29 +03:00 committed by zah
parent cb695d175f
commit 193d103934

View File

@ -7,13 +7,27 @@ type
proc writeValue*(writer: var JsonWriter, value: TableType) =
writer.beginRecord()
for key, val in value:
writer.writeField key, val
writer.writeField $key, val
writer.endRecord()
template to*(a: string, b: typed): untyped =
{.error: "doesnt support keys with type " & $type(b) .}
template to*(a: string, b: type int): int =
parseInt(a)
template to*(a: string, b: type float): float =
parseFloat(a)
template to*(a: string, b: type string): string =
a
proc readValue*(reader: var JsonReader, value: var TableType) =
type KeyType = type(value.keys)
type ValueType = type(value.values)
value = init TableType
for key, val in readObject(reader, KeyType, ValueType):
value[key] = val
for key, val in readObject(reader, string, ValueType):
value[to(key, KeyType)] = val