2017-07-10 4 views
0

に私が動的に、以下の文字列に値を挿入するコードの私の作品です:を注入値は動的にJSON文字列

arg = [{:state=>"running",:instance_id=>"i-0e0082f20149e5df0"}, 
     {:state=>"running",:instance_id=>"i-0e0082f20149e5df0"}] 
argv = ['{ "tray" : "0", "onebox" : "False", "args" : #{arg},"param" : []}'] 
options = JSON.parse(argv[0] || "{}", :symbolize_names => true) 

上記のコードは、JSONのパースエラーを示しています。どのように私はargsの値を動的に注入できますか?どんな助け?

+1

文字列が一重引用符で囲まれているからです。補間はそこでは機能しません。これには二重引用符で囲まれた文字列を使用してください。これにより、jsonの二重引用符をエスケープする必要はありません。 –

答えて

1

セルジオ(Sergio)補間はシングルクォート文字列では機能しません。

arg = [{:state=>"running",:instance_id=>"i-0e0082f20149e5df0"}, 
    {:state=>"running",:instance_id=>"i-0e0082f20149e5df0"}] 
argv = [ '{ "tray" : "0", "onebox" : "False", "args" : ' + arg.to_json + ',"param" : []}' ] 
options = JSON.parse(argv[0] || "{}", :symbolize_names => true) 
+0

ah yes、good old concatenation :) –

関連する問題