2017-10-08 24 views
-3

私のモデルには多くのjsonフィールドがあります。私は文字列形式でそれらを印刷したいと思います。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 

すべてのヘルプは理解されるであろう。

+0

あなたの予想される出力は、文字列を連結しないでください有効なJSON – Neo

+0

ではありません。それらをリストに追加し、 'str.join'メソッドを使用する – Vinny

答えて

0

チェックあなたが今

  • やっているようはいその後、以下のように行います別の関数に辞書を送信する場合は印刷されない場合は、あなたのデータは

    1. 型辞書であれば

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

  • 0

    complianceがdict/jsonであると仮定すると、このようにすることができます。 @chkriは、最初のチェックを示唆したように

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

    • 保存そのリストの上に、リスト内のキーdicts
    • 反復と

    連結されたリストを構築するコードは次のようになります。あなたのデータがdictである場合は、この1行のソリューションを試すことができます:

    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'}} 
    
    関連する問題