Class: JSON

Inherits:
Object show all
Defined in:
lib/cocoa/json.rb,
lib/android/json.rb

Overview

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