ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Вы не должны использовать регулярные выражения для управления JSON или XML, которые имеют бесконечное вложенное содержимое.Конечно, автоматизация не приспособлена для манипулирования этими структурами данных, и вместо этого вам следует использовать анализатор JSON / XML.
При этом, исключительно для целей обучения, я быстро исправлю ваш код.
1) Используйте replace
вместо replaceAll
, чтобы избежать интерпретации вашего searchString
как регулярного выражения:
String content=" \"get\" : {\n" +
" \"name\" : [ \"Test\" ],\n" +
" \"description\" : \"Test description to replace\",\n" +
" \"details\" : \"Test details\"";
String searchString=" \"name\" : [ \"Test\" ],\n" +
" \"description\" : \"Test description to replace\",";
String replaceString=" \"name\" : [ \"Actual\" ],\n" +
" \"description\" : \"Replaced description\",";
System.out.println(content.replace(searchString, replaceString));
output:
"get" : {
"name" : [ "Actual" ],
"description" : "Replaced description",
"details" : "Test details"
2) Или используйте replaceAll
, но избегайте скобок, чтобы избежать их интерпретации как попытки определения класса символов.
String searchString=" \"name\" : \\[ \"Test\" \\],\n" +
" \"description\" : \"Test description to replace\",";
String replaceString=" \"name\" : [ \"Actual\" ],\n" +
" \"description\" : \"Replaced description\",";
System.out.println(content.replaceAll(searchString, replaceString));
вывод:
"get" : {
"name" : [ "Actual" ],
"description" : "Replaced description",
"details" : "Test details"
Ссылка : Как анализировать JSON в Java
- Вы должны загрузить структуру json в объект
- Заменить значения атрибутов этого объекта на новые значения
- Снова экспортировать его в формате json