Используя NSJSONSerialization в RubyMotion

Я использую RubyMotion и пытаюсь сериализовать объект в JSON. Я не получаю сообщение об ошибке, но это приводит к сбою приложения.

  class Foo
     attr_accessor :name
  end

  e = Pointer.new(:object) 

  testItem = Foo.new              
  testItem.name = "test"          

  testJson = NSJSONSerialization.dataWithJSONObject(testItem, options:0, error: e)

Кто-нибудь может увидеть, правильно ли я использую этот класс? (или знаю альтернативу)

1 ответ

Решение

В вашем звонке нет ничего плохого. Проблема с вашими данными. Объект верхнего уровня в вашем testItem должен быть NSArray или NSDictionary,

Вы можете использовать массивы и хэши RubyMotion, так как Array < NSMutableArray < NSArray а также Hash < NSMutableDictionary < NSDictionary,

Попробуйте эти примеры testItems со своим вызовом:

testItem = ["test"]
testItem = {"names" => ["Fred", "Joe", "Mike"], "ages" => [17, 63, 28]}

Из NSJSONSerialization.h:

/* A class for converting JSON to Foundation objects and converting Foundation objects to JSON.

   An object that may be converted to JSON must have the following properties:
    - Top level object is an NSArray or NSDictionary
    - All objects are NSString, NSNumber, NSArray, NSDictionary, or NSNull
    - All dictionary keys are NSStrings
    - NSNumbers are not NaN or infinity
*/
Другие вопросы по тегам