【问题标题】:how to add '-' in yaml using dictionary/json?如何使用字典/json在yaml中添加'-'?
【发布时间】:2018-12-02 18:09:29
【问题描述】:

我有以下从字典创建 yaml 文件的代码:

import yaml
from collections import OrderedDict
import json
from pprint import pprint
import random 
import string
data = {
               "test_name" : "Create_user test",

               "stages":{
                   "name" : "check user sucessfully added",
                   "request": {
                       "url":"self.url",
                       "json":{
                           "username":"self.username",
                           "role":"self.role",
                           "userProfile":"self.userProfile"
                       },
                       "method":"self.method",
                       "headers":{"content_type":"application/json"}
                       },

                   "response" : {"status_code":200}
               }
}
print(data)
def setup_yaml():
    """ https://stackoverflow.com/a/8661021 """
    represent_dict_order = lambda self, data:  self.represent_mapping('tag:yaml.org,2002:map', data.items())
    yaml.add_representer(OrderedDict, represent_dict_order)    
setup_yaml()

with open('abc_try.tavern.yml', 'w') as outfile:
    yaml.dump(OrderedDict(data), outfile, default_flow_style=False)

我得到的“abc_try.tavern.yml”文件为:

test_name: Create_user test
stages:
  name: check user sucessfully added
  request:
    headers:
      content_type: application/json
    json:
      role: self.role
      userProfile: self.userProfile
      username: self.username
    method: self.method
    url: self.url
  response:
    status_code: 200

但我希望生成以下文件:

test_name: Create_user test
stages:
- name: check user sucessfully added
  request:
    headers:
      content_type: application/json
    json:
      role: self.role
      userProfile: self.userProfile
      username: self.username
    method: self.method
    url: self.url
  response:
    status_code: 200

如何在第三行的'name'之前添加'-'。(请注意'-'的间距和格式,即在'stages'的's'下方。

【问题讨论】:

    标签: python json dictionary yaml ordereddictionary


    【解决方案1】:

    The '-' indicates a list element。所以你必须把内部字典放在一个列表中:

    data = {
        "test_name" : "Create_user test",
        "stages": [
             {
                 "name" : "check user sucessfully added",
                 # ...
             }
        ]
    }
    

    【讨论】:

      猜你喜欢
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 2013-01-15
      • 2016-08-24
      • 2014-12-16
      • 1970-01-01
      • 2017-05-31
      相关资源
      最近更新 更多