Files
EWF/library/kernel/converters/json_hash_table_converter.e

79 lines
1.8 KiB
Plaintext

indexing
description: "A JSON converter for HASH_TABLE [ANY, HASHABLE]"
author: "Paul Cohen"
date: "$Date$"
revision: "$Revision$"
file: "$HeadURL: $"
class JSON_HASH_TABLE_CONVERTER
inherit
JSON_CONVERTER
create
make
feature {NONE} -- Initialization
make is
do
create object.make (0)
end
feature -- Access
value: JSON_OBJECT
object: HASH_TABLE [ANY, HASHABLE]
feature -- Conversion
from_json (j: like value): like object is
local
keys: ARRAY [JSON_STRING]
i: INTEGER
h: HASHABLE
a: ANY
do
keys := j.current_keys
create Result.make (keys.count)
from
i := 1
until
i > keys.count
loop
h ?= json.object (keys [i], void)
check h /= Void end
a := json.object (j.item (keys [i]), Void)
Result.put (a, h)
i := i + 1
end
end
to_json (o: like object): like value is
local
js: JSON_STRING
jv: JSON_VALUE
failed: BOOLEAN
do
create Result.make
from
o.start
until
o.after
loop
create js.make_json (o.key_for_iteration.out)
jv := json.value (o.item_for_iteration)
if jv /= Void then
Result.put (jv, js)
else
failed := True
end
o.forth
end
if failed then
Result := Void
end
end
end -- class JSON_HASH_TABLE_CONVERTER