2016-03-29 6 views
0

для ссылочного файла сравнить необходимость генерации json-файлов, где фигурные скобки всегда начинаются в новой строке.Ruby: как сгенерировать выход json с фигурными скобками (скобки, круглые скобки, завитки) в новой строке

Например, JSON хэш:

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

приводит после вызова

JSON.pretty_generate(my_json) 

к

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

Но, к сожалению, мне нужен выход, как это:

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

Есть ли какой-либо путь к этому с рубином, не разрушая красивое форматирование?

Благодаря

+1

Мне интересно, почему вам нужно, что удельная мощность, оба они действительны в формате JSON (как бы '{«Key»: { «Ключ»: «Значение»}} 'конечно). –

+0

Вы прочитали документацию для 'pretty_generate', которая говорит, что читает [документацию' generate'] (http://ruby-doc.org/stdlib-2.3.0/libdoc/json/rdoc/JSON.html#method- i-generate) для параметров? Вы пробовали эти варианты? Что вы пробовали? –

+0

Я пробовал сочетание: space => "\ n" и: indent => "\ t", но это не решает проблему, оно уничтожает даже форматирование. Я не хочу иметь новую строку после каждого «:» ... сразу после фигурных скобок и все еще держать красивое форматирование. –

ответ

0

Если вы хотите эту разницу в выходе, почему бы не заставить его? В соответствии с моим комментарием:

ОБНОВЛЕНО, чтобы охватить как { и [ кронштейн

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

, что является хорошим подходом, благодаря которому до сих пор. Но вы можете отредактировать свой комментарий для работы также с помощью «[... скобок ... в моем тесте они не начинаются в новой строке. –

+0

@ ŽeljkoSosic, dobro, сделано. –

+0

большой. hvala, спасибо: -) –