Write JSON::Any
parent
b8ebc57bb7
commit
f45fb927f4
|
@ -1,3 +1,5 @@
|
||||||
|
require "json"
|
||||||
|
|
||||||
class CBOR::Encoder
|
class CBOR::Encoder
|
||||||
def self.new(io : IO = IO::Memory.new)
|
def self.new(io : IO = IO::Memory.new)
|
||||||
packer = new(io)
|
packer = new(io)
|
||||||
|
@ -8,6 +10,37 @@ class CBOR::Encoder
|
||||||
def initialize(@io : IO = IO::Memory.new)
|
def initialize(@io : IO = IO::Memory.new)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def write(j : JSON::Any)
|
||||||
|
# Test each possible value of JSON::Any
|
||||||
|
case j
|
||||||
|
when .as_bool?
|
||||||
|
write j.as_bool
|
||||||
|
when .as_i?
|
||||||
|
write j.as_i
|
||||||
|
when .as_i64?
|
||||||
|
write j.as_i64
|
||||||
|
when .as_f?
|
||||||
|
write j.as_f
|
||||||
|
when .as_f32?
|
||||||
|
write j.as_f32
|
||||||
|
when .as_s?
|
||||||
|
write j.as_s
|
||||||
|
when .as_a?
|
||||||
|
write j.as_a
|
||||||
|
when .as_h?
|
||||||
|
write j.as_h
|
||||||
|
else
|
||||||
|
# JSON::Any ".as_bool?" function fails.
|
||||||
|
case j.raw
|
||||||
|
when Bool
|
||||||
|
write j.as_bool
|
||||||
|
when Nil
|
||||||
|
else
|
||||||
|
raise "Unknown kind of JSON: #{j.raw}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def write(value : Nil | Nil.class, use_undefined : Bool = false)
|
def write(value : Nil | Nil.class, use_undefined : Bool = false)
|
||||||
write(use_undefined ? SimpleValue::Undefined : SimpleValue::Null)
|
write(use_undefined ? SimpleValue::Undefined : SimpleValue::Null)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue