Подтвердить что ты не робот

Внедрение данных JSON в файл YAML

Я пишу прибор для своего стола. И один из столбцов принимает строку JSON в качестве значения.

Проблема заключается в том, что прибор не загружается с ошибкой:

Fixture::FormatError: a YAML error occurred parsing /home/saurajeet/code/dcbox/test/fixtures/hardware.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html
The exact error was:
  ArgumentError: syntax error on line 145, col 73: `  portslist: [{"name":"ob1","port_num":0,"port_type":"network"},{"name":"ob2","port_nu'.....

Любые решения для этого.

4b9b3361

Ответ 1

Я считаю, что его использование в кавычки должно сделать трюк:

portslist: '[{"name":"ob1","port_type" ... }]'

Ответ 2

Комментарий clarkevans относительно принятого ответа предложил лучший ответ для длинных бит JSON, потому что вы можете обернуть строки. Я просмотрел скалярный синтаксис блока, о котором он упомянул, и подумал, что включу здесь пример:

portslist: >
  [{"name":"ob1","port_num":0,"port_type":"network"},
  {"name":"ob2","port_nu...

Ответ 3

Если у вас есть строка, вы можете использовать ее так же просто, как сказал Влад Хомич:

portslist: '[{"name":"ob1","port_num":0,"port_type":"network"},...]'

Если вы используете ERB и имеете объект, вы можете использовать to_json и проверить, чтобы сбежать в строку JSON:

portslist: <%= [{name: 'ob1', port_num: 0, port_type: 'network'},...].to_json.inspect %>

И если у вас есть большая спецификация JSON, вы можете сохранить ее в отдельном файле и загрузить с помощью Ruby, чтобы вы могли сохранить ваш файл YAML в чистоте:

portslist: <%= File.read('/path/to/file.json').inspect %>

Ответ 4

Чтобы быть полным: если вы используете ActiveRecord::Store, вы можете загрузить свои данные просто с помощью представления YAML те же данные, даже если это магазин JSON:

one:
  portslist:
    - 
      name: 'ob1'
      port_num: 0
      port_type: 'network'
    - 
      name: 'ob2'
      port_num: 1
      port_type: 'network'

Ответ 5

В моей таблице столбец stripe_connect имеет тип JSONB. В приспособлении, вот что сработало. Обратите внимание, что внешние одиночные кавычки необходимы, но квадратных скобок нет. Все между одинарными кавычками - одна длинная строка.

stripe_connect: '{ "scope": "read_write", "livemode": false, "token_type": "bearer", "access_token": "sk_test_madeupvalue", "refresh_token": "rt_Ae29madeupvalueyX", "stripe_user_id": "acct_103yZabcdefg", "stripe_publishable_key": "pk_test_0HEOmadeupvalue" } '