#c #c 17 #c 14
Вопрос:
auto BTest = массив[i].at(L»Тест»).as_bool();
Здесь тест должен быть без учета регистра при чтении из json.
поэтому, если у json есть тест, он должен позволять
если у json есть тест, он должен разрешить.
Я пытаюсь читать и записывать JSON, переименовывая одно свойство в camelCase. Новое обновленное свойство Json выдает ошибку для старых данных Json. так как этот json не обновляется новым измененным свойством.
Как прочитать, сделайте старое свойство в Read (), чтобы разрешить принимать новые изменения, и как создать новое свойство, чтобы разрешить старые данные свойств Json.
например, Старый json: «домашние животные»: [{ «Собака»:правда }]
В Read() auto bDog = массив[i].at(L»Собака»).as_bool();
В Write() auto bDog = массив[i].at(L»собака»).as_bool(); Новый Json: «домашние животные»: [{ «собака»:истина }]
Теперь, как мне прочитать старый Json с измененным свойством.
Комментарии:
1. Какую библиотеку JSON вы используете?
2. касабланка c json
Ответ №1:
JSON чувствителен к регистру. Один из вариантов — сначала просканировать файл и заменить теги на эквивалент в нижнем регистре.
Другой вариант-развести один из парсеров json и изменить его, чтобы всегда менять регистр на нижний, пока он читает.
Я бы сказал, что тест на чтение без учета регистра сам по себе является неправильным, если только создание файлов не находится вне вашего контроля. В идеале у вас должен быть тест для генератора json, который проверяет правильность выполнения схемы, включая случай.
Комментарии:
1. На самом деле, старые данные json ни в коем случае не содержат свойств, обновляя новые данные json до верблюжьего регистра. при чтении старых данных json с новыми свойствами в верблюжьем корпусе возникает ошибка. строчные буквы не так эффективны.
2. Затем, учитывая, что вы можете легко создать список замен, вам следует просто найти и заменить старый файл и сделать его верблюжьим, независимо от того, что это было. Тогда вам не придется беспокоиться о случае при разборе json.
3. Много способов сделать это найти-заменить. Вот некоторые из них: unix.stackexchange.com/questions/271078/…
4. насколько мне известно, библиотеки json этого не делают. Вот еще один вариант. Как только вы проанализируете файл, переберите его в виде массива массивов и, пока вы это делаете, создайте еще один объект json, но с ключами, преобразованными в то, чем они должны быть. Затем используйте этот объект json и выполняйте поиск только в регистре верблюда. Чтобы преобразовать ключи на предыдущем шаге, о котором я упоминал, вы можете выполнить функцию tolower (), а затем найти для нее имя camelCase из списка. Дайте мне знать, если вам нужна помощь в этом, и я постараюсь найти время на этой неделе для написания примера кода.