Преобразование XML в JSON в Java - PullRequest
1 голос
/ 09 июня 2011

Мне известны несколько java-библиотек с открытым исходным кодом, которые преобразуют XML в JSON.

Однако я ищу библиотеку (или способ), которая подавит ведущий @, предшествующий атрибуту элемента.,Так, например, учитывая приведенную ниже строку JSON:

{ "description":
      { "@lang":"en-us",
        "@maxlength":"500",
        "#text":"Vitamin D Supplementation"
      }
}

Я хотел бы создать следующую строку JSON (обратите внимание на пропущенный @ перед "lang" и "maxlength"):

{ "description":
      { "lang":"en-us",
        "maxlength":"500",
        "#text":"Vitamin D Supplementation"
      }
}

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

1 Ответ

1 голос
/ 09 июня 2011

String.replace("\"@", "\"") или как?

UPDATE

Чтобы предотвратить замену @ внутри строкового значения, вы можете использовать версию регулярного выражения замены . Вы бы искали знак @, которому предшествует ", а не какой-то X, где X - двоеточие (:), за которым следует любое количество пробелов. Вы бы заменили на" снова.

Менее хакерский подход состоял бы в том, чтобы иметь потоковую библиотеку json в виде событий, связанных с содержимым, перехватывать любые события имени элемента объекта, заменять такие имена элементов, которые начинаются с символа @, соответственно, а затем возвращать их обратно в событие поток. Затем этот поток снова будет преобразован в текст JSON. (В настоящее время я работаю над библиотекой, которая предоставляет такую ​​функциональность, но, к сожалению, она еще не опубликована.)

Точно так же вы можете подключить процесс перевода XML в JSON. Переводчик должен будет передавать XML-поток в какие-либо события содержимого XML, которые впоследствии преобразуются в события содержимого JSON, которые затем преобразуются в текст JSON. (Хорошо, вот как я бы это сделал.) Если бы вы могли подключиться по обе стороны от стадии событий JSON, вы могли бы легко перевести конкретные имена членов объекта. Очевидно, что используемая вами библиотека должна была бы обеспечить возможность подключения, хотя бы только путем предложения шагов процесса для отдельного вызова.

(Если вам интересно, «имя члена объекта» - это часть перед: в объекте JSON, «значение» - это часть после него.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...