Я изо всех сил пытаюсь десериализовать файл входных данных в python 2.7 и действительно не знал, с чего начать. Я сохранил входной файл как JSON:
{
"Group": {
"Test": {
"test1": {
"x1": 100,
"y1": 150
},
"test2": {
"x1": 23,
"y1": 56,
"x2": 200,
"y2": 234
},
"test3": {
"x1": 123,
"y1": 456,
"x2": 345,
"y2": 986,
"x3": 234,
"y3": 654
},
"test4": {
"x1": 789,
"y1": 987,
"x2": 345,
"y2": 555,
"x3": 111,
"y3": 222,
"x4": 333,
"y4": 444
}
}
}
}
Я пытаюсь вырезать данные, поэтому, если необходим случай «test1», я могу взять значения x1 и y1 и заполнить поле. Если необходимы 3 пары значений x и y, мне нужно будет взять значения из "test3".
Я пытаюсь заполнить поля в следующей переменной в коде. Он сохраняется как словарь, так как конечный продукт представляет собой файл JSON. Мне нужно заполнить поля ширины и высоты значениями из файла данных, перечисленных выше. Вот переменная, распечатанная с использованием json.dumps для удобства чтения:
{
"subs": {
"1": {
"video_info": {
"width": x1,
"height": y1
}
},
"2": {
"video_info": {
"width": x2,
"height": y2
}
},
"3": {
"video_info": {
"width": x3,
"height": y3
}
}
}
}
Вышеупомянутая переменная была собрана воедино путем извлечения данных из разных объектов (каждый словарь в разделе «subs»), поэтому я не могу написать все это как словарь с нуля. У каждого элемента в «подпрограммах» уже есть значения ширины и высоты, которые необходимо перезаписать.
Примеры десериализации, которые я видел, у всех были заданные ключи. Любая помощь будет оценена по достоинству.
Добро пожаловать в stackoverflow! :) Сначала проверьте здесь свой json. json.parser.online.fr
и независимо от этого, не ясно, что вы спрашиваете, укажите ввод / желаемый результат / свой код и объясните, что не работает.
Извините за это, написал что-то быстрое и не использовал правильные кавычки для JSON. Я отредактировал эту часть и обновлю желаемый результат
Вы действительно установили ключи ... Десериализатор в настоящее время выдает ошибку? Или у вас проблемы с разбор? Вы пометили вопрос с помощью Python, так где же код Python?
У меня проблемы с синтаксическим анализом. Я поискал, и примеры, которые я видел, показали десериализацию объекта с заданными полями. Поскольку в некоторых частях моего файла данных было несколько переменных x или y, я не мог использовать решение, опубликованное для них.
Если у вас действительно возникли проблемы с синтаксическим анализом JSON, покажите нам свой код. Если это что-то более сложное, чем json.loads или json.load, проблема в том, что вы добавили дополнительной сложности, и никто не может отладить этот код, не увидев его.






d = {
"Group": {
"Test": {
"test1": {
"x1": 100,
"y1": 150
},
"test2": {
"x1": 23,
"y1": 56,
"x2": 200,
"y2": 234
},
"test3": {
"x1": 123,
"y1": 456,
"x2": 345,
"y2": 986,
"x3": 234,
"y3": 654
},
"test4": {
"x1": 789,
"y1": 987,
"x2": 345,
"y2": 555,
"x3": 111,
"y3": 222,
"x4": 333,
"y4": 444
}
}
}
}
d2 = {"subs": {}}
for i in range(1,4):
s=str(i)
d2["subs"][s] = {}
t=d2["subs"][s]['video_info'] = {}
t['width']=d['Group']['Test'][f'test{i}'][f'x{s}']
t['height']=d['Group']['Test'][f'test{i}'][f'y{s}']
print(d2)
Вы можете сохранить его в переменной и вызвать поверх него, чтобы увидеть test1-4.
import json
json_data = json.dumps({
"Group": {
"Test": {
"test1": {
"x1": 100,
"y1": 150
},
"test2": {
"x1": 23,
"y1": 56,
"x2": 200,
"y2": 234
},
"test3": {
"x1": 123,
"y1": 456,
"x2": 345,
"y2": 986,
"x3": 234,
"y3": 654
},
"test4": {
"x1": 789,
"y1": 987,
"x2": 345,
"y2": 555,
"x3": 111,
"y3": 222,
"x4": 333,
"y4": 444
}
}
}
})
json = json.loads(json_data)
print json["Group"]["Test"]["test4"]
не похоже на действительный JSON.