class JSON
NOTE: Copied from github.com/HipByte/Flow/blob/master/flow/json/android/json.rb
Copied from github.com/HipByte/Flow/blob/44283b31a63bc826d2c068557b6357dc1195680b/flow/json/cocoa/json.rb
Public Class Methods
convert_java(obj)
click to toggle source
# File lib/android/json.rb, line 37 def self.convert_java(obj) case obj when Org::JSON::JSONArray obj.length.times.map { |i| convert_java(obj.get(i)) } when Org::JSON::JSONObject iter = obj.keys hash = Hash.new loop do break unless iter.hasNext key = iter.next value = obj.get(key) hash[convert_java(key)] = convert_java(value) end hash when Java::Lang::String obj.to_s when Org::JSON::JSONObject::NULL nil else obj end end
generate(object)
click to toggle source
# File lib/cocoa/json.rb, line 35 def self.generate(object) raise "Invalid JSON object" unless NSJSONSerialization.isValidJSONObject(object) error_ptr = Pointer.new(:id) data = NSJSONSerialization.dataWithJSONObject(object, options: 0, error: error_ptr) unless data raise error_ptr[0].description end data.to_s end
parse(str)
click to toggle source
# File lib/android/json.rb, line 26 def self.parse(str) tok = Org::JSON::JSONTokener.new(str) obj = tok.nextValue if obj == nil raise "Can't deserialize object from JSON" end # Transform pure-Java JSON objects to Ruby types. convert_java(obj) end