如何将其打印到有组织的json文件中?

时间:2017-06-06 08:04:48

标签: json python-3.x mapping tinydb

我需要有关json文件输出的帮助。我正在尝试打印名为密钥对的列表中的密钥。我必须生成60个密钥,我已将其包含在我的代码的(计数< 60)部分(这里不是)。我只是显示我的代码的导出部分,我有问题。这是我的代码:

with open("/home/pi/Desktop/database.json", 'w+'):
    db = TinyDB('/home/pi/Desktop/database.json')
    table = db.table('Books')
    db.insert({'Book ID' : keypair[bookid], 'Serial No.' : keypair[bookserial] })

但是,我现在遇到的问题是它打印出列表中的所有键 - bookid和bookserial,而不是在一个{}中打印一对键。

这是一个示例输出,其中count< 2:

Pillar": {}, "_default":
 {"1":
   {"Bookid": ["b'\\XXXXXX bookid 1 XXXXXXX'", "b'\\AAAAAA bookid 2 AAAAAAA'"], 
    "Serial No.": ["b'\\YYYYYserialno 1YYYYY'", "b'BBBBserial no2BBBB'"]
   }
 }

这是我打算得到的输出:

以这样的格式,每次再次运行时都会打印一对键:

{ Books:
  {
    Book ID: XXXX bookid 1 XXXX
    Serial No.: XXX serialno 1 XXXX
  }
  {
    Book ID: XXX bookid 2 XXXX
    Serial No.: XXX serial no. 2 XXX
   }
 }

正如你所看到的,json文件很乱,我不知道如何使它自动整洁,而且,你可以看到键一起打印成一个而不是单独打印。想象一下,必须打印60对这些,并且它们都在一个{}之内。

帮助!

1 个答案:

答案 0 :(得分:0)

当您尝试创建json时,我在代码中看到了多个语法问题。你可以尝试这样做。

{ Books:
  {
      {
        Book ID: XXXXXXXX
        Serial No.: XXXXXXX
      },
      {
        Book ID: XXXXXXX
        Serial No.: XXXXXX
       }
  }
 }

正如您所看到的,我也将书籍项目包装在括号中,现在这些项目以逗号分隔。

这可以帮助您解决问题。