Я думаю, что, возможно, нашел разъединение.Я думал, что у нас было что-то вроде
PropertiesConfiguration pc = new PropertiesConfiguration();
pc.addProperty("SomeKey",
new JSONObject().put("Stuff", getUserInput()).toString());
pc.save(myWriter);
Теперь представьте, что пользователь вводит строку This is "Interesting"...
.Моя проблема возникает из-за того, что, хотя строка будет храниться с правильно экранированными кавычками, в файле свойств появится
SomeKey={\"SomeKey\":\"This is \"Interesting\"\"}
, что, конечно, ужасно сломано.Вот почему это происходило (я думаю).Вместо использования класса PropertiesConfiguration для создания файла свойств, как в приведенном выше идеальном коде, исходный код был больше похож на
myWriter.write(keyName + "=" +
new JSONObject().put("Stuff", getUserInput()).toString());
, который, конечно, только экранирует пользовательский ввод для JSON, но больше не экранируетJSON для парсера свойств.Я не могу поклясться в этом без дополнительного тестирования, но похоже, что метод pc.AddProperty()
будет избегать своих аргументов (снова), если это будет необходимо.
Конечный результат: я виноват, что предположил парня, который написалкод, над которым я работаю, использовал предоставленные ему API-интерфейсы, а не «изгой» и пытался создать необходимый формат напрямую.