2017-04-13 34 views
0

我試圖模擬一個只有1或2個已知鍵名稱在頂層動態生成的哈希,所以我可以測試它,以期望將其轉換爲一個嵌套的JSON。這是我使用的是什麼:關於哈希模型的Ruby 2.2.5錯誤

ruby.exe -v

ruby 2.2.5p319 (2016-04-26 revision 54774) [i386-mingw32]

我有,雖然解析的問題,我不知道爲什麼,或者究竟我做錯了。我真的不知道我的限制是什麼,但這似乎是一個基本的格式問題。但是,在過去的10分鐘裏,我一直對此視而不見,所以也許存在一些潛在的問題?這裏是我的整個應用程序迄今:

tcm = { \ 
     :tc => \ 
     { \ 
      :tests => \ 
      { \ 
       :alpha_tests => \ 
       { \ 
        :passing_tests => {}, \ 
        :failing_tests => \ 
        { \ 
         :alpha_test_1 => {:name => "alpha_test_1", :result => "FAILED"}, \ 
         :alpha_test_2 => {:name => "alpha_test_2", :result => "FAILED"} \ 
        } \ 
       }, \ 
       :beta_tests => \ 
       { \ 
        :passing_tests => \ 
        { \ 
         :beta_test_1 => {:name => "beta_test_1", :result => "PASSED"} \ 
        }, \ 
        :failing_tests => \ 
        { \ 
         :beta_test_2 => {:name => "beta_test_2", :result => "FAILED"} \ 
        } \ 
       } \ 
      }, \ 
      { \ 
       :test_session => 1293823 \ 
      } \ 
     } \ 
    } 

puts tcm 

回答

2

,因爲我看到你錯過了一個關鍵問題:

{ \ 
    :test_session => 1293823 \ 
} \ 

應該

:some_key => { \ 
    :test_session => 1293823 \ 
} \ 

另外這是奇怪的格式。更好的是

tcm = { 
    tc: { 
    tests: { 
     alpha_tests: { 
     passing_tests: {}, 
     failing_tests: { 
      alpha_test_1: { name: 'alpha_test_1', result: 'FAILED' }, 
      alpha_test_2: { name: 'alpha_test_2', result: 'FAILED' } 
     } 
     }, 
     beta_tests: { 
     passing_tests: { 
      beta_test_1: { name: 'beta_test_1', result: 'PASSED' } 
     }, 
     failing_tests: { 
      beta_test_2: { name: 'beta_test_2', result: 'FAILED' } 
     } 
     } 
    }, 
    key_to_fix: { 
     test_session: 1_293_823 
    } 
    } 
} 

puts tcm 
1

如果刪除了alpha_testsbeta_tests部分的哈希是這樣的:

tcm = { \ 
     :tc => \ 
     { \ 
      :tests => \ 
      { \ 
      }, \ 
      { \ 
       :test_session => 1293823 \ 
      } \ 
     } \ 
    } 

在這種情況下:tests => {}, {}是不是一個有效的Ruby哈希值。你可以使用一個數組:tests => [ {}, {} ]

BTW,所有這些反斜槓是沒有必要的,你也可以這樣寫更succintly使用新的Ruby哈希樣式({test_session: 1293823}而不是{:test_session => 129823}),因此您的代碼可能是這樣的:

tcm = { 
     tc: { 
       tests: [ 
         { ... }, 
         { 
          test_session: 1293823 
         } 
        ] 
      } 
     } 
+0

真是一種解脫!我遇到了與'\ n'有關的錯誤,所以我正在做一個謹慎的ruby newb。 –