2016-01-12 3 views
0

Я использую Grape на Padrino, чтобы сделать тестовый API для своего мобильного приложения.Как указать тип значения JSON?

Как я могу указать тип моего объекта JSON?

Вот как я это сделать, но каждый возвращаемым значением является строка:

module Acme 
    module Api 
    class Ping < Grape::API 
     format :json 

     get '/user/112132a08s245c/availability_list' do 
      { 
       "availability_list"=> [ 
       { 
       :type=> "OOO", 
       :from_date=> "21-12-2004", 
       :to_date=> "21-23-2007", 
       :all_day=> "false" 

       }, 
       { 
       :type=> "WFH", 
       :from_date=> "21-12-2004", 
       :to_date=> "21-23-2007", 
       :all_day=> "false" 
       } 

       ] 
     } 
     end 


     get '/user/112132a08s245c/issues' do 
      { 
       "issues"=> [ 
       { 
       :issure_id=> "1ab300co221", 
       :title=> "No water", 
       :description=> "No water in kitchen", 
       :severity=> "low", 
       "location" => { 
        :lat => "37.4224764", 
        :lng => "-122.0842499" 
       } 

       }, 
       { 
       :issure_id=> "1ab300co222", 
       :title=> "No fire", 
       :description=> "No fire in kitchen", 
       :severity=> "low", 
       "location" => { 
        :lat => "37.4224764", 
        :lng => "-122.0842499" 
       } 

       } 

       ] 
     } 
     end 

    end 
    end 
+1

JSON - это строка. Это строковое представление ваших структур данных. '' {"x": 5} ''- это строка. –

+0

Вам нужно прочитать [спецификацию JSON] (http://www.json.org), я думаю. JSON сериализует данные в строку, потому что объекты не могут быть переданы между разрозненными языками. Когда он видит входящую строку, синтаксический анализатор знает, что он должен преобразовать ее обратно в объект. –

ответ

1

Размышлять об этом:

require 'json' 

foo = {'a' => 1} 
foo.class # => Hash 
str = JSON[foo] # => "{\"a\":1}" 
str.class # => String 
bar = JSON[str] # => {"a"=>1} 
bar.class # => Hash 

Вы должны прочитать the JSON spec. JSON сериализует данные в строку, потому что объекты не могут быть переданы между разрозненными языками. Когда он видит объект, синтаксический анализатор сериализует его в строку. Когда входящая строка принимается и передается парсеру, она знает, что она должна преобразовать строку обратно в объект.

Смежные вопросы