Невозможно загрузить строку в объекты, используя json.loads - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь загрузить строку в объект Python.Я получаю сообщение об ошибке ниже: Это ошибка: Ожидаемое значение: строка 15, столбец 15 (символ 351) {'allData': нет}

Когда я изменяю значение для cprob на приведенный ниже код, проблема не возникает:

    "cprob": {
        "T": 1,
        "A": 2,
        "C": 3
        }

Данные в test.txt:

[{
        "V": ["Offer", "Interview", "Grades", "Admission", "Experience"],
    "E": [["Grades", "Interview"],
        ["Experience", "Interview"],
        ["Grades", "Admission"],
        ["Interview", "Offer"]],
    "Vdata": {
        "Offer": {
            "ord": 4,
            "numoutcomes": 2,
            "vals": ["0", "1"],
            "parents": ["Interview"],
            "children": 0,
            "cprob": {
                "['0']": [.9, .1],
                "['1']": [.4, .6],
                "['2']": [.01, .99]
                }
            }
        }
}]

Код:

import json
class JsonData: 

    def __init__(self, path):
        self.allData = None 

    def dictload(self, path):
        f = open(path, 'r')
        ftext = f.read() 
        print(ftext)
        try: 
            self.allData = json.loads(ftext)
        except Exception as e:
            print('This is error : ', e)

path = "test.txt"

jsonData = JsonData(path)
jsonData.dictload(path)
print(vars(jsonData))

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Очевидно, что Solarc прав, но у меня недостаточно представителей, чтобы комментировать, поэтому я добавляю немного сюда.

Если у вас возникли проблемы с чтением файла json (или простого текстового файла json), попробуйте поместить данные или примеры данных через валидатор json (т. Е. https://jsonlint.com/). It может сэкономить время на отладку.

0 голосов
/ 16 января 2019

Кажется, что модуль Python json не понимает .1 как 0.1. Если вы добавите 0 перед периодом, он будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...