加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如果可能的话,如何将Python dict转换为JSON作为列表

发布时间:2020-12-16 21:54:44 所属栏目:Python 来源:网络整理
导读:我正在尝试使用json.dumps将我的Python对象序列化为JSON.如果使用json.dumps序列化dict,它显然会被序列化为JSON字典{..};如果序列化列表或元组,它将是一个JSON数组. 我想知道是否有任何方法可以轻松地将Python dict序列化为JSON列表,如果可能的话.如果可能的

我正在尝试使用json.dumps将我的Python对象序列化为JSON.如果使用json.dumps序列化dict,它显然会被序列化为JSON字典{..};如果序列化列表或元组,它将是一个JSON数组.

我想知道是否有任何方法可以轻松地将Python dict序列化为JSON列表,如果可能的话.如果可能的话,我的意思是如果键从0开始并按顺序排序,例如:

{0:'data',1:'data',2:'data}

以上将被序列化为JSON:'{“0”:“data”,“1”:“data”,“2”:“data”}’,但我希望它被序列化为[‘data’,’数据’,’数据’],因为键从0开始并按顺序排列.

我的理由是因为我有很多从PHP序列化的JSON数据,其中PHP数组中有键,如果键按照上面的顺序排序,PHP的json.encode使用数组,如果它们以任何其他方式键入,它们被序列化为JSON词典.我希望我的JSON序列化能够匹配我的PHP和Python代码.不幸的是,在我的情况下,更改PHP代码不是一个选项.

有什么建议?我找到的唯一解决方案是编写自己的函数来验证每个python字典,看看它是否可以在json.dumps之前首先转换为列表.

编辑:我正在序列化的这个对象可能是一个列表或一个字典,它可以在其中包含额外的dicts,列表等等(嵌套).我想知道是否有任何’简单’的方法可以做到这一点,否则我相信我自己可以写一个递归的解决方案.但是使用现有代码以避免更多错误总是更好.

最佳答案
我不知道没有递归的解决方案……虽然您可以从自定义编码器的编码方法内部调用转换器,但这只会增加不必要的复杂性.

In [1]: import json

In [2]: d = {"0": "data0","1": "data1","2": {"0": "data0","2": "data2"}}

In [3]: def convert(obj):
   ...:     if isinstance(obj,(list,tuple)):
   ...:         return [convert(i) for i in obj]
   ...:     elif isinstance(obj,dict):
   ...:         _,values = zip(*sorted(obj.items()))  
   ...:         return convert(values)
   ...:     return obj

In [4]: json.dumps(convert(d))
Out[4]: '["data0","data1",["data0","data2"]]'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读