Разбор JSON, как формат обмена данными - PullRequest
0 голосов
/ 22 декабря 2009

Я бы хотел использовать формат обмена данными без кавычек. Может быть, что-то на основе JSON:

{param:value,param:value,param:{[{param:value,param:value}, {param:value,param:value}]}}

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

Ответы [ 3 ]

2 голосов
/ 22 декабря 2009

Что такого важного в том, что в вашем формате не используются кавычки? Скорее всего, есть что-то еще, что вы можете изменить, чтобы отменить это требование (что было бы лучше).

Что касается использования регулярных выражений для анализа JSON-подобных форматов, нет . Это ПЛОХАЯ идея; регулярные выражения никогда не предназначались для анализа рекурсивных структур, таких как JSON. По крайней мере, у вас возникнут проблемы с производительностью многих совпадений регулярных выражений, которые вам нужно будет использовать, чтобы попытаться справиться с рекурсией; в худшем случае вы столкнетесь с попытками даже разобраться, как сопоставить и разобрать рекурсию в первую очередь.

Ваш предложенный формат также имеет свои проблемы: как отличить ,, { или : в значении ключа от фактического ,, { или : это часть формата? Как вы справляетесь с пробелами в именах ключей или значений?

1 голос
/ 22 декабря 2009

Почему бы не использовать JSON и не использовать доступные вам библиотеки и инструменты? Эта запись в блоге детализирует анализатор JSON на PHP.

Для обработки данных JSON существует JSON расширение в PHP, которое доступно после PHP 5.2.0. Две функции: json_encode () и json_decode () являются очень полезное преобразование и разбор Данные JSON через PHP.

Создание другого формата кажется повторяющимся и подверженным ошибкам, когда имеется так много четко определенных и хорошо протестированных параметров (JSON, XML, буфер протокола Google, YAML).

1 голос
/ 22 декабря 2009

Вы можете использовать XML и не использовать никаких атрибутов. Вам также нужно избегать заголовка, который имеет несколько кавычек.

...