json
1{ 2 "JPmJc": { 3 "information": { 4 "guild_id": 1111111111111, 5 "owner": "<@640391313153327125>さん", 6 "name": "テスト大会", 7 "type": "トーナメント戦", 8 "format": "個人戦", 9 "team-limit": "1人", 10 "permission": "許可する" 11 }, 12 "status": false, 13 "participates": [], 14 "result": [] 15 }, 16 // ここでワンセット 17 "Txja7": { 18 "information": { 19 "guild_id": 1111111111111, 20 "owner": "<@640391313153327125>さん", 21 "name": "テスト大会2", 22 "type": "トーナメント戦", 23 "format": "個人戦", 24 "team-limit": "1人", 25 "permission": "許可する" 26 }, 27 "status": false, 28 "participates": [], 29 "result": [] 30 } 31}
このような感じで1セットごとにJsonに追記していきたいのですが、追記をしようとすると上書きされ、いろいろ試してみたのですがわからなかったので質問させてください。
python
1 def upload(self): 2 file_path = 'cogs/save/information.json' 3 with codecs.open(file_path, 'r', 'utf-8') as f: 4 fw = json.load(f) 5 6 save = fw[self.info[1]] = {} 7 save["information"] = { 8 "guild_id": self.info[0], 9 "owner": self.info[2], 10 "name": self.info[3], 11 "type": self.info[4], 12 "format": self.info[5], 13 "team-limit": self.info[6], 14 "permission": self.info[7], 15 } 16 save["status"] = False 17 save["participates"] = [] 18 save["result"] = [] 19 20 with codecs.open(file_path, 'w', 'utf-8') as f: 21 json.dump(fw, f, ensure_ascii=False, indent=2)
python
1Traceback (most recent call last): 2 File "*****************", line 333, in _run_event 3 await coro(*args, **kwargs) 4 File "*****************", line 319, in on_raw_reaction_add 5 await conform_competition_information() 6 File "*****************", line 282, in conform_competition_information 7 data.upload() 8 File "*****************", line 30, in upload 9 json.dump(fw, f, ensure_ascii=False, indent=2) 10 File "*****************", line 179, in dump 11 for chunk in iterable: 12 File "C:\Users********\AppData\Local\Programs\Python\Python36\lib\json\encoder.py", line 430, in _iterencode 13 yield from _iterencode_dict(o, _current_indent_level) 14 File "C:\Users********\AppData\Local\Programs\Python\Python36\lib\json\encoder.py", line 404, in _iterencode_dict 15 yield from chunks 16 File "C:\Users********\AppData\Local\Programs\Python\Python36\lib\json\encoder.py", line 340, in _iterencode_dict 17 raise ValueError("Circular reference detected") 18ValueError: Circular reference detected
self.info にはtupleで情報が入っていて、それを上のJson形式に直したいのですが、先ほど述べたように上書きされてしまったため色々調べた挙句この動かないコードにたどり着きました。また、特に7~15行目の部分がいいコードをかけている自信がなく、Jsonの書き方を同時に指導してくださるとありがたいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/18 09:45