-2

I'm currently building an application in python where I have a class Corpus. I would like to convert this class to a json format and save it to a json file. Then load the file and finally turn back the json to its Class Corpus.

In order to do that I use the library jsonpickle. The problem is when I load the json, the type is a dictionary and jsonpickle.decode wants a string. I tried to convert the dictionary to a string but its not working. I hope someone will be able to help me. Here is my code of my class "Json" (to save and load my Corpus)"

import json, jsonpickle

class Json:
    
    def __init__(self):
        self.corpus = {}
        
    def saveCorpus(self,corpus):
        jsonCorpus = jsonpickle.encode(corpus,indent=4,make_refs=False)
        with open('json_data.json', 'w') as outfile:
            outfile.write(jsonCorpus)
            
    def loadCorpus(self):
        with open('json_data.json', 'r') as f:
            self.corpus = json.load(f)
        
    def getCorpus(self):
        return self.corpus

error :

TypeError: the JSON object must be str, bytes or bytearray, not dict

haduki
  • 1,145
  • 5
  • 23
FeckNeck
  • 114
  • 9

1 Answers1

0

I found the problem. The issue was the way I was saving my json to a file. Here is the solution:

def saveCorpus(self,corpus):
    jsonCorpus = jsonpickle.encode(corpus,indent=4,make_refs=False)
    with open('json_data.json', 'w') as outfile:
        json.dump(jsonCorpus, outfile)
E_net4
  • 27,810
  • 13
  • 101
  • 139
FeckNeck
  • 114
  • 9