Недавно я создал парсер в Python 3, который преобразует файлы из пользовательского формата (назовем формат .querty) в JSON (.json) для более удобного управления его содержимым. Теперь мне интересно, как лучше всего перевести обратно JSON в мой исходный формат, сохранив всю его первоначальную структуру.
Пример файлов можно увидеть ниже,
example.qwerty
Dict_abc_1{
Dict_abc_2{
HeaderGUID="";
Version_TPI="999";
EncryptionType="0";
}
Dict_abc_3{
FamilyName="John Doe";
}
Dict_abc_4{
Array_abc{
{TimeStamp="2018-11-07 01:00:00"; otherinfo="";}
{TimeStamp="2018-11-07 01:00:00"; otherinfo="";}
{TimeStamp="2018-11-07 01:00:00"; otherinfo="";}
{TimeStamp="2018-11-07 02:53:57"; otherinfo="";}
{TimeStamp="2018-11-07 02:53:57"; otherinfo="";}
}
Dict_abc_5{
LastContact="2018-11-08 01:00:00";
BatteryStatus=99;
BUStatus=PowerOn;
LastCallTime="2018-11-08 01:12:46";
LastSuccessPoll="2018-11-08 01:12:46";
CallResult=Successful;
}
}
}
Code=999999;
example.json
{
"Dict_abc_1":{
"Dict_abc_2":{
"HeaderGUID":"",
"Version_TPI":"999",
"EncryptionType":"0"
},
"Dict_abc_3":{
"FamilyName":"John Doe"
},
"Dict_abc_4":{
"Array_abc":[
{"TimeStamp":"2018-11-07 01:00:00", "otherinfo":""},
{"TimeStamp":"2018-11-07 01:00:00", "otherinfo":""},
{"TimeStamp":"2018-11-07 01:00:00", "otherinfo":""},
{"TimeStamp":"2018-11-07 02:53:57", "otherinfo":""},
{"TimeStamp":"2018-11-07 02:53:57", "otherinfo":""}
],
"Dict_abc_5":{
"LastContact":"2018-11-08 01:00:00",
"BatteryStatus":99,
"BUStatus":"PowerOn",
"LastCallTime":"2018-11-08 01:12:46",
"LastSuccessPoll":"2018-11-08 01:12:46",
"CallResult":"Successful"
}
}
},
"Code":999999
}
Структурные определения .qwerty, которые отличаются от json
- Словари / Массивы не имеют разделений между ними и их ключом
- Словари / массивы имеют два перевода строки после определения
- Переменные используют '=' в качестве разделителя между ними и их значением
- Переменные используют ';' после их значения
- Массивы используют {} вместо []
Поскольку мой текущий парсер .qwerty to .json использует лексический и синтаксический анализ. Я не думаю, что необходимо воссоздавать другой синтаксический анализатор, используя этот метод, поскольку данные теперь находятся в очень удобной форме (json). Мне было интересно, будет ли хорошей идеей расширить json.dumps для адаптации к моим новым определениям, но я не знаю, с чего начать или возможно ли это.
Я пытаюсь сделать это эффективно, мысли и подходы очень ценятся, спасибо.