【问题标题】:convert string response to array of json objects将字符串响应转换为 json 对象数组
【发布时间】:2022-11-19 17:19:14
【问题描述】:

我收到了需要另存为 CSV 文件的回复。所以我想将响应字符串转换为 json 对象数组,然后访问所有对象并将每个对象转换为 json 并推送到另一个数组以写入带有 csv.writerow() 的 csv。可能这是太多的步骤,可以减少。但我目前正在寻找一种将响应转换为数组的方法。这是响应示例以及试用代码:

import json

null = -1

response_object = """[{
"a" : "1",
"b" : "2",
"c" : "null"
}, {
"d" : "3",
"e" : "4",
"f" : "null"
}] 
"""

jess_dict = json.dumps(response_object)

jeson_converted = json.loads(jess_dict)

print(jeson_converted)

由于响应对象不是有效的 json,我不确定应该如何转换它。请建议。

【问题讨论】:

    标签: python json


    【解决方案1】:

    这种方法对我有用,使用 ast 包中的 literal_eval 方法来解析列表的字符串表示,检查它是否对你的情况有用:

    response_object = """[{
    "a" : "1",
    "b" : "2",
    "c" : "null"
    }, {
    "d" : "3",
    "e" : "4",
    "f" : "null"
    }] 
    """
    
    import ast
    parsed_response_object = ast.literal_eval(response_object)
    for json_obj in parsed_response_object:
        print(json_obj)
    

    输出:

    {'a': '1', 'b': '2', 'c': 'null'}
    {'d': '3', 'e': '4', 'f': 'null'}
    

    【讨论】:

      【解决方案2】:

      json.dumps 用于从 json 中获取字符串转储。这里你已经有了一个字符串,所以你不需要转储它。

      如果你只是使用loads,它会给你一个字典列表:

      ...
      jeson_converted = json.loads(response_object)
      print(jeson_converted)
      

      输出:

      [{'a': '1', 'b': '2', 'c': 'null'}, {'d': '3', 'e': '4', 'f': 'null'}]
      

      【讨论】:

        猜你喜欢
        • 2011-08-19
        • 2014-11-11
        • 2017-01-17
        • 2013-08-29
        • 1970-01-01
        • 2017-11-11
        • 2012-05-08
        • 2013-07-14
        • 1970-01-01
        相关资源
        最近更新 更多