0

Rubyで変数を作成しました:

@var = 5

次に、このオブジェクトでその変数を使用したいと思います。

@json = '{"id":0,"observation": [{"key": "BLAH_BLAH","value": ["SOMETHING"]}'

何かのようなもの:

@json = '{"id":#{@var},"observation": [{"key": "BLAH_BLAH","value": ["SOMETHING"]}'

オブジェクト内から二重引用符を削除して一重引用符に置き換え、JSON オブジェクトを二重引用符で囲むと、解析エラーが発生します。で引用符をエスケープしようとすると\、解析エラーも発生します。

@json = "{\"id\":\"#{@var}\",\"observation\": [{\"key\": \"BLAH_BLAH\",\"value\": [\"SOMETHING\"]}"

これについて別の方法があるのではないでしょうか?

4

3 に答える 3

4

これは、単一引用符を使用して JSON 文字列を作成しているために発生しており、Ruby の単一引用符内では補間が行われません。

より簡単な例:

a = 1
puts '#{a}'
puts "#{a}"

JSONRuby 内の組み込みモジュールなど、ライブラリを使用して JSON を構築することを強くお勧めします。

require 'json'
JSON.generate(:id => @var, :observation => { :key => "blah blah", :value => ["something"] })
于 2013-09-26T22:46:12.253 に答える
0

JSON クラスを使用して JSON 文字列を操作します。

require 'json'

json = '{"id":0,"observation":[{"key":"BLAH_BLAH","value":["SOMETHING"]}]}'

foo = JSON[json]  # => {"id"=>0, "observation"=>[{"key"=>"BLAH_BLAH", "value"=>["SOMETHING"]}]}
foo['id'] = 5
puts JSON[foo]

# >> {"id":5,"observation":[{"key":"BLAH_BLAH","value":["SOMETHING"]}]}

未知の構造やオブジェクトを処理するときに発生する可能性のある特別なことがたくさんありますが、文字列への補間ではカバーできません。事前に構築されたホイールを利用する必要があり、ホイールを発明したり回避したりしないでください。

于 2013-09-26T23:01:05.020 に答える