【问题标题】:Printing json data in string format以字符串格式打印 json 数据
【发布时间】:2017-10-08 10:08:55
【问题描述】:

我的模型中有很多 json 字段。我想以字符串格式打印它们。

我使用的代码是:

data=[]
detail=details.objects.filter(Id=item['Id'])
for i in compliance:
     data.append(str("Name")+str(":")+str(i.Name)+str(" , ")+str("Details")+str(":")+str(i.Details)

print data

我得到的输出是:

Name:ABC, Details:{u'Status': u'True', u'Remarks': u'No Remark'} 

预期的输出是:

Name:ABC, Details:Status:True,Remarks:No Remark 

任何帮助将不胜感激。

【问题讨论】:

  • 您的预期输出不是有效的 JSON
  • 不要连接字符串。将它们附加到列表并使用str.join 方法

标签: python json


【解决方案1】:

检查你的数据是否是dict类型

  1. 如果没有像现在这样打印
  2. 如果是,则将字典发送到另一个功能,如下所示

    def print_dict(d): return ",".join([key+":"+str(d[key]) for key in d])

【讨论】:

    【解决方案2】:

    你可以这样做,假设compliance是一个dict/json。

    • 将关键字典保存在列表中
    • 遍历该列表并构建一个串联列表

    代码如下所示:

    keyorder = ['Name', 'Status', 'Remarks']   
    res = []
    for key in keyorder:  
        res.append(key + ':' + compliance[key])
    
    ', '.join(res)
    
    'Name:ABC, Status:True, Remarks:No remarks'
    

    【讨论】:

      【解决方案3】:

      正如@chkri 建议的那样,首先检查您的数据是否是dict,如果是,那么您可以尝试以下单行解决方案:

      dict={'Name':'ABC', 'Details':{u'Status': u'True', u'Remarks': u'No Remark'}}
      
      
      print({k:v for k,v in dict.items()})
      

      输出:

      {'Name': 'ABC', 'Details': {'Remarks': 'No Remark', 'Status': 'True'}}
      

      【讨论】:

        猜你喜欢
        • 2017-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-05
        • 2016-06-21
        • 1970-01-01
        • 2010-11-10
        相关资源
        最近更新 更多