如何将字典保存为JSON文件?

9

我有一些发票项目:

lista_items = {}        
lineNumber = 0
for line in self.invoice_line_ids:
    lineNumber = lineNumber + 1            
    print lineNumber
    lista_items["numeroLinea"] = [lineNumber]
    lista_items["cantidad"] = [line.quantity]
    lista_items["costo_total"] = [line.price_subtotal]
    lista_items["precioUnitario"] = [line.price_unit]
    lista_items["descripcion"] = [line.name]            
    # for line_tax in line.invoice_line_tax_ids:                
    #     print line_tax.amount            
    #     print line_tax.id 
    #     # print line.invoice_line_tax_ids               
return lista_items

我需要将字典中的项保存,并将其保存为JSON格式。

我该怎么做?


2
可能是Python从字典编写JSON临时文件的重复问题。 - Adrian W
3个回答

15

您可以使用json.dump()将字典保存到文件中。例如:

# note that output.json must already exist at this point
with open('output.json', 'w+') as f:
    # this would place the entire output on one line
    # use json.dump(lista_items, f, indent=4) to "pretty-print" with four spaces per indent
    json.dump(lista_items, f)

1
在下面的代码中,只需用您的字典替换变量d,并将您的文件名放在'json_out'的位置。请注意参数w+,它同时打开文件进行读取和写入,并覆盖任何现有的文件。 还要注意,json中还有'dumps'方法,它会给出字典的字符串表示形式。
import json
d = {'x':2,'y':1}
out_file = open('json_out','w+')
json.dump(d,out_file)

0

只需将lista_items转储到JSON文件中,如下所示:

import json

lista_items = {}        
lineNumber = 0
for line in self.invoice_line_ids:
    lineNumber = lineNumber + 1            
    lista_items["numeroLinea"] = [lineNumber]
    lista_items["cantidad"] = [line.quantity]
    lista_items["costo_total"] = [line.price_subtotal]
    lista_items["precioUnitario"] = [line.price_unit]
    lista_items["descripcion"] = [line.name]                 
      
with open('file.json', 'w') as fp:
    json.dump(lista_items, fp,  indent=4)

请问这里的self是做什么用的? - James Huang
在Python中,self关键字用于类中引用本地属性和函数,就像其他语言中的this关键字一样。 - Muhammad Zakaria

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接