diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2013-10-23 23:15:34 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2013-10-23 23:15:34 -0700 |
commit | b084a971f87ad20f4521634aee76d5189c1d9044 (patch) | |
tree | 14fcb48afa04719a03658d9751ae2f6b805bc170 /lib | |
parent | ba4de36ba9854f94f8c62701a16f99025985a605 (diff) | |
download | ffi-yajl-b084a971f87ad20f4521634aee76d5189c1d9044.tar.gz |
fix integers as keys
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ffi_yajl.rb | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/ffi_yajl.rb b/lib/ffi_yajl.rb index c2530dc..4b7bd61 100644 --- a/lib/ffi_yajl.rb +++ b/lib/ffi_yajl.rb @@ -234,12 +234,12 @@ module FFI_Yajl private - def self.encode_part(obj, yajl_gen) + def self.encode_part(obj, yajl_gen, processing_key = false) case obj when Hash FFI_Yajl.yajl_gen_map_open(yajl_gen) obj.each do |key, value| - encode_part(key, yajl_gen) + encode_part(key, yajl_gen, true) encode_part(value, yajl_gen) end FFI_Yajl.yajl_gen_map_close(yajl_gen) @@ -256,7 +256,12 @@ module FFI_Yajl when FalseClass FFI_Yajl.yajl_gen_bool(yajl_gen, 1) when Fixnum - FFI_Yajl.yajl_gen_integer(yajl_gen, obj) + if processing_key # XXX: is this standard JSON? do we have to promote other types? + str = obj.to_s + FFI_Yajl.yajl_gen_string(yajl_gen, str, str.length) + else + FFI_Yajl.yajl_gen_integer(yajl_gen, obj) + end when Bignum raise "Bignum encoding: not implemented" when Float |