在python中格式化数据

时间:2014-04-11 09:30:06

标签: python json api python-requests

我正在使用Python -request库发出其余请求。

API正在接受以下格式的数据

aspected_data = 
    {
      "UseAgentBreakdown": false,
      "Activities": ["Lesson 3: Redeem"],
      "ReportLevel": 
                      {
                          "ParentLevel": [
                                          {
                                              "LevelID": "myretail",
                                              "Level": "COL_NUM8_VAL"
                                        }
                                        ],
                        "CurrentLevel": "COL_NUM5_VAL",
                        "NameField": "COL_NUM5_VAL"
                    }
    }

但我的代码生成的数据类似于。

data =     {'UseAgentBreakdown': 'False', 'Activities': u"['Lesson 3: Redeem']", 'ReportLevel': u"{'ParentLevel': [{'LevelID': 'myretail', 'Level': 'COL_NUM8_VAL'}], 'CurrentLevel': 'COL_NUM5_VAL', 'NameField': 'COL_NUM5_VAL'}"}

基本上这是我生成数据的方式

   data = { "Activities" : learningtype,
                 "UseAgentBreakdown": str(agentbreakdown),
                 "ReportLevel" : reportlevel
                 }

其中

print learnertype   o/p is     ['Lesson 3: Redeem']
print agentbreakdown o/p is   False
print reportlevel    o/p is {'ParentLevel': [{'LevelID': 'myretail', 'Level': 'COL_NUM8_VAL'}], 'CurrentLevel': 'COL_NUM5_VAL', 'NameField': 'COL_NUM5_VAL'}

我尝试使用json.dumps(data)转储数据,这也没有帮助我。请帮助我如何生成上述格式。

2 个答案:

答案 0 :(得分:0)

我不认为您怀疑的两个数据值之间存在差异。只是为了确保你可以通过以下方式检查翻译是否认为他们是不同的:

data =     {'UseAgentBreakdown': 'False', 'Activities': u"['Lesson 3: Redeem']", 'ReportLevel': u"{'ParentLevel': [{'LevelID': 'myretail', 'Level': 'COL_NUM8_VAL'}], 'CurrentLevel': 'COL_NUM5_VAL', 'NameField': 'COL_NUM5_VAL'}"}
a_data =     {'UseAgentBreakdown': 'False', 'Activities': u"['Lesson 3: Redeem']", 'ReportLevel': u"{'ParentLevel': [{'LevelID': 'myretail', 'Level': 'COL_NUM8_VAL'}], 'CurrentLevel': 'COL_NUM5_VAL', 'NameField': 'COL_NUM5_VAL'}"}
data == a_data

打印True

答案 1 :(得分:0)

您似乎遇到的一个问题是,您尝试使用的数据json.dumps包含字符串。

如果您可以将学习类型的数据作为list获取,则代理商分解为bool而报告级别为dict dumps应该可以为您提供所需内容

agentbreakdown = False
activities = [...insert list elements here...]
reportlevel = {...}

data = { "Activities" : learningtype,
             "UseAgentBreakdown": agentbreakdown,
             "ReportLevel" : reportlevel
             }

json.dumps(data, indent=4)

给出

{
    "UseAgentBreakdown": false,
    "Activities": [
        "Lesson 3: Redeem"
    ],
    "ReportLevel": {
        "ParentLevel": [
            {
                "LevelID": "myretail",
                "Level": "COL_NUM8_VAL"
            }
        ],
        "CurrentLevel": "COL_NUM5_VAL",
        "NameField": "COL_NUM5_VAL"
    }
}