2016-03-29 71 views
0

numaralı yeni bir satırda parantez (parantez, parantez, eğri) içeren bir json çıktısının nasıl üretileceği, parantezlerin her zaman yeni bir satırda başladığı json dosyaları oluşturma olasılığını karşılaştırır. Derece içinRuby: Bir referans dosyası için

, json karma:

:

my_json = {"Key" => {"Key" => "Value"}} 

{ 
    "Key": { 
    "Key": "Value" 
    } 
} 

Ama ne yazık ki böyle bir çıkış ihtiyacımız

JSON.pretty_generate(my_json) 

çağrısına sonra açar

{ 
    "Key": 
    { 
    "Key": "Value" 
    } 
} 

Güzel biçimlendirmeyi bozmadan yakutla bunun bir yolu var mı?

Teşekkür

+1

belirli çıktı, yapabilirler '{ "Key" olarak (geçerli JSON hem konum neden ihtiyaç merak ediyorum: { "Anahtar": "Değer"}} '' tabiki). –

+0

"Oluşturma" belgelerini okuyan "pretty_generate" belgelerini okudunuz (http://ruby-doc.org/stdlib-2.3.0/libdoc/json/rdoc/JSON.html#method- seçenekler için? Bu seçenekleri denediniz mi? Ne denedin? –

+0

Birbirini denedim: space => "\ n" ve: indent => "\ t", ancak bu sorunu çözmez, biçimlendirmeyi bile yok eder. Her ":" sonra yeni bir satır yapmak istemiyorum ... sadece parantez sonra ve hala güzel biçimlendirme tutmak için –

cevap

0

çıktıda bu farkı istedikleri takdirde, neden zorlama? Benim yorumum gereğince:

hem { ve [ Ünite tutucusu kapsayacak şekilde GÜNCELLEME

my_json = {"Keys" => [{"Key" => "Value"},{"key1" => "val2"}], "newkey" => {"nk1" => "val3"}} 

puts JSON::pretty_generate(my_json).gsub(
      /^(.*)(\"[^\"]+\"): ([\{\[])/, #first brackets: white space. Second: Key, Third: Bracket 
      "\\1\\2:\n\\1\\3")    #\\1: white space (on both lines), \\2: Key, \\3: Brac[e|ket] 

{ 
    "Keys": 
    [ 
    { 
     "Key": "Value" 
    }, 
    { 
     "key1": "val2" 
    } 
    ], 
    "newkey": 
    { 
    "nk1": "val3" 
    } 
} 
+0

numaralı telefon hattına hazırlayabilirsiniz, şimdiye kadar teşekkürler. Ancak yorumunuzu "[" parantezler "ile de çalışacak şekilde düzenleyebilir misiniz ... benim sınamada yeni bir satırda başlamıyorlar. –

+0

@ ŽeljkoSosic, dobro, tamamlandı. –

+0

harika. hvala, teşekkürler: -) –