Мне предоставлен некоторый JSON из внешнего процесса, который я не могу изменить, и мне нужно изменить эту строку JSON для работы процесса downstream Java. Строка JSON выглядит следующим образом:Использование regex для удаления котировок JSON
{"widgets":"blah","is_dog":"1"}
Но это должно выглядеть следующим образом:
{"widgets":blah,"is_dog":"1"}
Я должен удалить кавычки blah
. В действительности, blah
- огромный объект JSON, и поэтому я упростил его ради этого вопроса. Так что я решил атаковать эту проблему, выполнив два String#replace
вызовов, один перед blah
, и один за ним:
dataString = dataString.replaceAll("{\"widgets\":\"", "{\"widgets\":");
dataString = dataString.replaceAll("\",\"is_dog\":\"1\"}", ",\"is_dog\":\"1\"}");
Когда я запускаю это я получаю смутную ошибку во время выполнения:
Illegal repetition
Может какое-нибудь место регулярного выражения, где я собираюсь сбежать? Заранее спасибо.
'{" widgets ": blah," is_dog ":" 1 "}' недействителен JSON, что вы используете для десериализации? –
Конечно, вы всегда можете разобрать JSON, проанализировать встроенный объект, затем собрать и повторно выполнить сеанс. –
@BenjaminGruenbaum - Вы должны прочитать немного внимательно - «blah» действительно '{" someJson ":" object "}'. –