2013-08-18 8 views
2

Я пытаюсь использовать приложение iOS для чтения json, созданного сервером rails. На данный момент я просто являюсь текстовым файлом, но конечной целью является его получение по маршруту.Rails метод «as_json» возвращает неверный json?

КСН приложение бросает ошибки, пытаясь прочитать (который был сгенерирован с as_json):

{"created_at"=>Fri, 16 Aug 2013 13:21:07 UTC +00:00, "gender"=>"M", "id"=>1, "location_id"=>1, "max_hit_points"=>nil, "my_name"=>"Jim Bob", "npc_type_id"=>nil, "universe_id"=>1, "updated_at"=>Fri, 16 Aug 2013 13:21:07 UTC +00:00} 

, когда я даю, что в JSon валидатора (http://jsonformatter.curiousconcept.com)

я получаю несколько ошибок о почти все , тем более, что он имеет «=>», а не двоеточие.

Я делаю что-то совершенно странное? Почему рельсы, похоже, не генерируют действительный json? Есть ли какие-то несколько типов действительных json (стрелки против двоеточий?) Как я могу заставить его генерировать json, что нравится приложение iOS (или этот валидатор)?

+0

Это похоже на хэш, а не на json. как ты это сделал? В контроллере рельсов? Или ставит? Или писать в файл? –

ответ

3

as_json Используется для подготовки хэша, подходящего для рендеринга json. (see doc)

Чтобы получить реальную строку json, вам необходимо позвонить в to_json.

Например:

your_object.as_json.to_json 

Более подробная информация о разнице и последствие can be found here

+0

Да, я сам это осознал. Stack Overflow позволит мне выбрать ваш ответ через несколько минут. – Jenny

1

Г, это была моя собственная глупая ошибка. «as_json» превращает что-то в литеральный объект ruby ​​json (который является хэшем). «to_json» превращает его в строку json, которую могут читать нерубинные языки. Ба.