2017-02-17 12 views
1

Я начинаю на Python, и у меня есть небольшая проблема с JSON. В учебнике я работаю есть две функции:TypeError: {1, 3} не является сериализуемым JSON

def read_json(filename): 
    data = [] 
    if os.path.isfile(filename): 
     with open(filename, "r") as f: 
      data = json.load(f) 
    return data 


def save_json(filename, data): 
    with open(filename, "w") as f: 
     json.dump(data, f) 

Но когда я пытаюсь сохранить мои данные есть ошибка в спасении:

raise TypeError(repr(o) + " is not JSON serializable") 
TypeError: {1, 3} is not JSON serializable 

Может кто-нибудь мне помочь?

+1

Вы можете разместить образец JSon данные, которые вы пишете, а также проверить тип (данные), которые вы пишете в файл. – Himaprasoon

ответ

1

{1, 3} является set, который, как ошибка указывает, не может быть сериализовать в формате JSON - единственная коллекция types в формате JSON списки (так называемые массивы в JSON) и словари (так называемые объекты в формате JSON).

Вам нужно преобразовать его в список:

converted = list(my_data) 
save_json(my_filename, converted) 
+0

yup. Спасибо, это работает. – proceder

+0

Рад это услышать. Если вам нравится, вы можете [принять] (http://stackoverflow.com/help/someone-answers) ответ, который решает вашу проблему, щелкнув галочку рядом с ней ... это позволяет другим людям знать, что решение работает. –

+1

уверен. я сделаю это. – proceder