Method: MotionPrime::JSON.parse

Defined in:
motion-prime/models/json.rb

.parse(str_data, &block) ⇒ Hash, ...

Parses a string or data object and converts it in data structure.

Parameters:

  • str_data (String, NSData)

    the string or data to convert.

Returns:

  • (Hash, Array, NilClass)

    the converted data structure, nil if the incoming string isn’t valid.

Raises:

  • (JsonParseError)

    If the parsing of the passed string/data isn’t valid.



12
13
14
15
16
17
18
19
20
21
22
23
# File 'motion-prime/models/json.rb', line 12

def self.parse(str_data, &block)
  return nil unless str_data
  data = str_data.respond_to?(:to_data) ? str_data.to_data : str_data
  if data.respond_to?(:dataUsingEncoding)
    data = data.dataUsingEncoding(NSUTF8StringEncoding)
  end
  opts = NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves | NSJSONReadingAllowFragments
  error = Pointer.new(:id)
  obj = NSJSONSerialization.JSONObjectWithData(data, options: opts, error: error)
  raise JsonParseError, error[0].description if error[0]
  obj
end