2016-03-29 14 views
1

Der JSON-String:Rubin: Integration einen rubin Schlüssel/Wert-Hash in einem bestehenden JSON-String

jsonString = {"string1" => {"test1" => "test2"}} 

Ergebnisse (mit JSON.pretty_generate) in einem hübschen gedruckt:

{ 
    "string1": 
    { 
     "test1": "test2" 
    } 
} 

Aber wenn ich versuche, alle Elemente von zwei Arrays in diesem JSON-String hinzuzufügen

keys = [:key0, :key1] 
values = [:value0, :value1] 

my_hash = Hash[keys.zip values] 

jsonString = {"string1" => {"test1" => "test2", my_hash}} 

ich erhalte immer ein:

Syntaxfehler, unerwarteten '}', in der Erwartung => jsonString = { "string1" => { "test1" => "test2", my_hash}}

ich habe ein Verhalten wie dies erwartet :

jsonString = {"string1" => {"test1" => "test2", keys[0] => values[0], keys[1] => values[1]}} 

Ausgang:

{ 
    "string1": 
    { 
     "test1": "test2", 
     "key0": "value0", 
     "key1": "value1" 
    } 
} 

eine Möglichkeit, den Hash-Mechanismus dazu verwenden gibt es?

Vielen Dank.

Antwort

1

Versuchen Sie jsonString.merge(my_hash)?

Mein Verständnis ist, dass die Variable jsonString ist eigentlich ein Hash, kein Json-String. Wenn Sie diesen Hash in eine echte JSON-Zeichenfolge konvertieren möchten, können Sie das JSON-Modul (mit require 'json') als jsonStrong.to_json aufrufen, aber sobald Sie den Hash in eine Zeichenfolge konvertiert haben, ist es schwieriger, andere Hashes zu haben. Am besten fügen Sie alle Hashes zusammen und konvertieren das Ergebnis in json.

+0

Okay, danke. Ich bin völlig neu in Rubin :-) –