35 lines
1.1 KiB
Ruby
35 lines
1.1 KiB
Ruby
![]() |
framework 'Foundation'
|
||
|
require 'multi_json/adapters/ok_json'
|
||
|
|
||
|
module MultiJson
|
||
|
module Adapters
|
||
|
class Nsjsonserialization < MultiJson::Adapters::OkJson
|
||
|
ParseError = ::MultiJson::OkJson::Error
|
||
|
|
||
|
def self.load(string, options={})
|
||
|
string = string.read if string.respond_to?(:read)
|
||
|
data = string.dataUsingEncoding(NSUTF8StringEncoding)
|
||
|
object = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves, error: nil)
|
||
|
if object
|
||
|
object = symbolize_keys(object) if options[:symbolize_keys]
|
||
|
object
|
||
|
else
|
||
|
super(string, options={})
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def self.dump(object, options={})
|
||
|
pretty = options[:pretty] ? NSJSONWritingPrettyPrinted : 0
|
||
|
object = object.as_json if object.respond_to?(:as_json)
|
||
|
if NSJSONSerialization.isValidJSONObject(object)
|
||
|
data = NSJSONSerialization.dataWithJSONObject(object, options: pretty, error: nil)
|
||
|
NSMutableString.alloc.initWithData(data, encoding: NSUTF8StringEncoding)
|
||
|
else
|
||
|
super(object, options)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|
||
|
end
|