2016-01-12 89 views
0

我在Padrino上使用Grape爲我的移動應用程序製作測試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將數據序列化爲字符串,因爲對象不能在不同語言之間傳輸。當它看到一個對象時,解析器將它序列化爲一個字符串。當收到傳入的字符串並將其傳遞給解析器時,它知道必須將該字符串轉換回對象。

相關問題