Class: JSON
Overview
NOTE: Copied from github.com/HipByte/Flow/blob/master/flow/json/android/json.rb
Class Method Summary collapse
Class Method Details
.convert_java(obj) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/android/json.rb', line 14 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) ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/cocoa/json.rb', line 11 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) ⇒ Object
2 3 4 5 6 7 8 9 |
# File 'lib/cocoa/json.rb', line 2 def self.parse(json_string) error_ptr = Pointer.new(:id) object = NSJSONSerialization.JSONObjectWithData(json_string.dataUsingEncoding(NSUTF8StringEncoding), options: 0, error: error_ptr) unless object raise error_ptr[0].description end object end |