my json дает как строку вывода, а не int в python - PullRequest
0 голосов
/ 14 июля 2020
import pathlib
a=pathlib.Path(__file__).parent.absolute()
dirc=str(a)+'\\file.json'
dirc2=str(a)+'\\PrettyJson.json'
data={1: {"titolo": "yea boi", "voto": 10, "genere": "a me ne so"}, 2: {"titolo": "yea boi 2", "voto": 8, "genere": "bo"}}

def jsonPrettyPrint():
    with open(dirc,'w') as json_file:
        json.dump(data, json_file)
    with open(dirc) as json_file:
        with open(dirc2,'w') as PrettyJsonFile:
            Obj = json.load(json_file)
            PrettyJson = json.dumps(Obj, indent=4)
            json.dump(PrettyJson,PrettyJsonFile)
            print(PrettyJson)

jsonPrettyPrint()

Вот код, он работает правильно, но когда я печатаю Pretty Json, он дает в качестве вывода это

{
    "1": {
        "titolo": "yea boi",
        "voto": 10,
        "genere": "a me ne so"
    },
    "2": {
        "titolo": "yea boi 2",
        "voto": 8,
        "genere": "bo"
    }
}

, как вы видите, 2 и 1 - это строки, а не целые числа , но 8 и 10 - интендеры, иди, почему, любая помощь приветствуется

1 Ответ

1 голос
/ 14 июля 2020

Преобразуйте ключи в int после загрузки JSON.

with open(dirc) as json_file:
    data = json.load(json_file)
for key, value in list(data.items()):
    data[int(key)] = value
    del data[key]
print(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...