Перевод Json в Sql

#php #sql #json

#php #sql #json

Вопрос:

Я ищу библиотеку для PHP, которая может переводить json в sql. То есть, на основе некоторого определения или схемы, он должен генерировать инструкции insert / update.

Кто-нибудь знает о такой библиотеке? Я задал несколько поисковых систем, и ничего не появилось.

Пример:

JSON

 {
    "person_id": 1,
    "name": "John Doe",

    "roles": ["admin","editor","regular_user"],

    "friends": 
    [
        {"person_id": 10, "name": "Johny Walker", "is_best_friend": true},
        {...} // more friends
    ]
}
  

Структура таблицы:

 Persons: person_id (int), name (text)
Roles: person_id (int), role (text)
Friends: person_id (int), is_best_friend (bool)
  

Это всего лишь пример.

Я имею в виду преобразование, подобное XSLT. Я понимаю, что такая система будет довольно сложной, но этот простой пример можно перевести без проблем.

Я думал реализовать это сам, но я ленив, поэтому сначала спрашиваю.

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

Комментарии:

1. Что? Можете ли вы обновить вопрос и добавить текст? Вы говорите о преобразовании модели в модель?

2. Я понимаю, что на самом деле это не касается вашего вопроса, но рассматривали ли вы базу данных, ориентированную на документы, такую как CouchDB ?

3. @Mike Steinert — да, это не очень хорошо сочетается с тем, что я делаю.

Ответ №1:

Структура данных SQL проста и имеет строгую «жестко закодированную» структуру, но JSON может хранить объекты, которые наследуются один в другой. Я не думаю, что такой инструмент существует. Даже если id работает, у него будет много ограничений.

Комментарии:

1. Это простой скрипт, который может отображать любой массив в серию инструкций ВВОДА, без поддержки нескольких таблиц, без сопоставления схемы.

Ответ №2:

Что вам действительно нужно искать, так это ORM.

Типичные программные конструкции сильно отличаются от того, как работает sql, это называется несоответствием объектно-реляционного импеданса. Попытка сопоставить или преобразовать структуру объекта или массива со схемой базы данных не является тривиальной задачей, поскольку требует знаний о двух структурах данных и набора правил для каждого значения.

Комментарии:

1. Спасибо, в настоящее время я использую doctrine, мне это не нравится, поэтому исследую некоторые сумасшедшие идеи.

2. Я тоже использую Doctrine, и я вас понимаю ;). Но я не могу представить ничего другого, что было бы достаточно широким, чтобы стать основой, а не стать полным беспорядком.