Регулярное выражение для парсинга массива объектов JSON?

Я пытаюсь использовать последнюю версию jquery, проблема решена.

спасибо всем.

11
задан Dan Herbert 3 January 2009 в 03:53
поделиться

4 ответа

Сбалансированные круглые скобки являются буквально примером из учебника языка, который не может быть обработан с регулярными выражениями. JSON является по существу сбалансированными круглыми скобками плюс набор другого материала с фигурными скобками, замененными parens. В иерархии формальных языков JSON является контекстно-свободным языком. Регулярные выражения не могут проанализировать контекстно-свободные языки.

Некоторые системы предлагают расширения регулярных выражений, которые своего-рода-sorta обрабатывают сбалансированные выражения. Однако они - все ужасные взломы, они - все непортативное устройство, и они - все в конечном счете неправильный инструмент для задания.

В профессиональной работе Вы почти всегда использовали бы существующий синтаксический анализатор JSON. Если бы Вы хотите к самокрутке в образовательных целях затем, я предложил бы запуститься с простой арифметической грамматики, которая поддерживает + - * / (). (JSON имеет некоторые правила выхода, которые, в то время как не сложный, предпримут Вашу первую попытку тяжелее, чем это должно быть.) В основном Вы должны будете:

  1. Разложите язык на алфавит символов
  2. Запишите контекстно-свободную грамматику с точки зрения тех символов thatrecognizes язык
  3. Преобразуйте грамматику в нормальную форму Chomsky, или около достаточно для создания шага 5 легким
  4. Запишите лексический анализатор, который преобразовывает необработанный текст в Ваш входной алфавит
  5. Запишите синтаксический анализатор с рекурсивным спуском, который берет вывод Вашего лексического анализатора, анализирует его и производит некоторый вывод

Это - типичный третий год присвоение CS в примерно любом университете.

Следующий шаг должен узнать, как сложный JSON представляет Вас в виде строки, должен инициировать переполнение стека в Вашем рекурсивном синтаксическом анализаторе. Затем посмотрите на другие типы синтаксических анализаторов, которые могут быть записаны, и Вы поймете, почему любой, кто должен проанализировать контекстно-свободный язык в реальном мире, использует инструмент как yacc или antlr вместо того, чтобы писать синтаксический анализатор вручную.

Если это больше учится, чем Вы искали затем, необходимо не стесняться идти, используют стандартный синтаксический анализатор JSON, satisified, что Вы изучили что-то важное и полезное: пределы регулярных выражений.

39
ответ дан 3 December 2019 в 00:49
поделиться

Вы используете.NET 3.5? Если так, можно использовать DataContractJsonSerializer проанализировать это. Нет никакой причины сделать это самостоятельно.

Если Вы не используете.NET 3.5, можно использовать Jayrock.

6
ответ дан 3 December 2019 в 00:49
поделиться

JSON не может обычно анализироваться с регулярными выражениями (определенные чрезвычайно упрощенные варианты JSON могут, но затем они не JSON, но что-то еще).

Вам нужен фактический синтаксический анализатор для надлежащего парсинга JSON.

И так или иначе, почему Вы пытаетесь проанализировать JSON вообще? Существуют многочисленные библиотеки там, которые могут сделать это для Вас, и намного лучше, чем Ваш код был бы. Почему изобретают велосипед, когда существует фабрика колеса за углом со словами FOSS по двери?

0
ответ дан 3 December 2019 в 00:49
поделиться

Сбалансированные круглые скобки - это буквально учебный пример языка, который не может быть обработан с помощью регулярных выражений

бла бла бла. .. проверьте это:

arrayParser = "(?<Key>[\w]+)":"?(?<Value>([\s\w\d\.\\\-/:_]+(,[,\s\w\d\.\\\-/:_]+)?)+)"?

это работает для меня

, если вы хотите сопоставить пустые значения, измените последний '+' на '*'

11
ответ дан 3 December 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: