Регулярное выражение, чтобы определить, действителен ли частичный ввод JSONJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Регулярное выражение, чтобы определить, действителен ли частичный ввод JSON

Сообщение Anonymous »

У меня есть сценарий, в котором мне нужно проверить, является ли частичный ввод (см. ниже) действительным JSON или нет? Я направил этот ответ, чтобы определить, является ли данная строка действительным JSON или нет.

Пример ввода:

Код: Выделить всё

 {
"JSON": [{
"foo":"bar",
"details": {
"name":"bar",
"id":"bar",
Что я уже пробовал:

Код: Выделить всё

/ (?(DEFINE)
(?   -? (?= [1-9]|0(?!\d) ) \d+ (\.\d+)? ([eE] [+-]? \d+)? )
(?   true | false | null )
(?    " ([^"\n\r\t\\\\]* | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9a-f]{4} )* " )
(?     \[  (?:  (?&json)  (?: , (?&json)  )*  )?  \s* \]{0,1} )
(?
      \s* (?&string) \s* : (?&json)  )
(?    \{  (?:  (?&pair)  (?: , (?&pair)  )*  )?  \s* \}{0,1} )
(?   \s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) \s* )
) \A (?&json)\,{0,1} \Z /six
Я сделал закрытие массива и объектов необязательным (разрешить ноль или один раз). Но в некоторых случаях это не удастся, например, когда вы открываете объект, не закрывая другой объект (показано ниже), регулярное выражение все равно найдет совпадение.

Недействительно, но соответствует:

Код: Выделить всё

 {
"JSON": [{
"foo":"bar",
"details": {
"name":"bar",
"id":"bar",{
Как проверить частичный ввод JSON?

РЕДАКТИРОВАТЬ:

Как упоминалось @ntahdh в комментариях, это регулярное выражение не будет работать с использованием java.util.regex. Итак, теперь мне нужно регулярное выражение, которое должно работать без рекурсии

Подробнее здесь: https://stackoverflow.com/questions/601 ... valid-json
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»