2016-03-29 18 views
1

JSON Dize: oldukça baskılı içinde (JSON.pretty_generate ile)Yakut: Varolan JSON dizesinde bir yakut anahtar/değer karması entegre

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

sonuçları:

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

Ama Bu JSON Dizesi'ne iki dizinin tüm elemanları eklemeye çalıştığınızda

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

my_hash = Hash[keys.zip values] 

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

hep alıyorum:

sözdizimi hatası '}', beklenmedik, => jsonString = { "dize1" => { "test1" => "dnm2", my_hash}}

Böyle bir davranış beklerdik bekliyorduk :

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

Çıktı:

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

karma-mekanizmayı kullanan bir yolu var mı?

Çok teşekkürler.

cevap

1

jsonString.merge(my_hash)'u deneyin?

Anlayışım, jsonString adı verilen değişkenin aslında bir karma değil, bir json dizesi olmasıdır. Eğer bu kareyi gerçek bir JSON dizgisine dönüştürmek isterseniz, jsonStrong.to_json numaralı telefonu aramaktan ziyade json modülünü (require 'json' kullanarak) içe aktarabilirsiniz, ancak karma değeri bir dizgeye dönüştürdüğünüzde, bunun diğer karmaları olmasının daha zordur. Tüm karmaları bir araya getirmek, ardından sonucu json'a dönüştürmek en iyisidir.

+0

Tamam, teşekkürler. Ruby'de tamamen yeniim: -) –