summaryrefslogtreecommitdiff
path: root/lib/ffi_yajl.rb
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2013-10-23 23:15:34 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2013-10-23 23:15:34 -0700
commitb084a971f87ad20f4521634aee76d5189c1d9044 (patch)
tree14fcb48afa04719a03658d9751ae2f6b805bc170 /lib/ffi_yajl.rb
parentba4de36ba9854f94f8c62701a16f99025985a605 (diff)
downloadffi-yajl-b084a971f87ad20f4521634aee76d5189c1d9044.tar.gz
fix integers as keys
Diffstat (limited to 'lib/ffi_yajl.rb')
-rw-r--r--lib/ffi_yajl.rb11
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