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
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# 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) ⇒ Object
35 36 37 38 39 40 41 42 43 |
# 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) ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'lib/cocoa/json.rb', line 26 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 |