|
|
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
Создал в таблице колонку d с типом JSON, вставил ["aa", "bbb", "cccc"] Делаю select, далее на php echo json_encode(array( 'data' => fetchAll(PDO::FETCH_ASSOC) )); все гуд. Вот только в javascript $.get(url, function(d){console.log(data);}, 'json'); приходит {"aaData":[{"d":"[\"aa\", \"bbb\", \"cccc\"]"}]} или что тоже самое "["aa", "bbb", "cccc"]" ну и соответственно, js считает это одним текстом, а не объектом из трех текстов А вот если бы пришло ["aa", "bbb", "cccc"] -то было бы все замечательно Вопрос: что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 16:52:41 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
PCContra, pg при чем тут? для чего json_encode? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 17:50:40 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
fetchAll вернул строку, Вы её сунули в массив и преобразовали в JSON, и получили то что получили ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 18:13:31 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
ГостьикfetchAll вернул строку, Вы её сунули в массив и преобразовали в JSON, и получили то что получили fetchAll вернул двухмерный массив(строки, поля). Я ожидаю ( и это разумно), что фечалл распетрушит и json объект и вернет вместо Код: php 1. 2. 3. 4. 5. более многомерный массив: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. Разве это не то, чего стоит ожидать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 18:32:05 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
PCContra, покажите результат запроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 18:38:10 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
SmeL_md, А теперь понял Ваш набор букв. Если убрать все ваши телодвижения и отдать результат сразу js то и проблем с новым типом не будет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 18:41:25 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
PCContraЯ ожидаю ( и это разумно), что[b] фечалл распетрушит и json объектДля этого нужно чтобы PDO понимал тип json, а он вряд ли это умеет. Попробуйте написать пожелание авторам PHP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 22:47:09 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
Гость_0PCContraЯ ожидаю ( и это разумно), что[b] фечалл распетрушит и json объектДля этого нужно чтобы PDO понимал тип json, а он вряд ли это умеет. Попробуйте написать пожелание авторам PHPАга и про xml, hstore, и так далее чтоб вообще было круто, массивы полагаю тоже туда. После этого появится вопросы от любителей select * from обновил php и стал тормозить сервер :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 23:01:18 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
SmeL_mdSmeL_md, А теперь понял Ваш набор букв. Если убрать все ваши телодвижения и отдать результат сразу js то и проблем с новым типом не будет :) Пробовал? Если в js отдавать массив результата, то через джсон_енкоде. А вот как не кодировать поле - вот вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2014, 23:35:35 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
PCContra, Какая версия Postgres ? если 9.2 или ниже, то тип JSON для хранения - бесполезный. Разве что только, как сериализация хранения. Что бы быть уверенным что вы записали именно JSON а набор буков. Также ваш пример вполне логичен. Почему вы решили, что должны с "[\"aa\",\ "bbb\", \"cccc\"]" получить ассоциативный массив, не понятно. Ведь JSON предусматривает только как тип хранения, для дальнейшей работы с индексами по нему, поиском и тд тп. Но это плюшки с версии слона 9.3. Вы с Pg получаете строку, а не обьект. По этому, для начала избавтесь от слешей (stripslashes)и пропустите через json_encode и будет вам счастье. а PHP тут не виноват, он все делает правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 00:18:42 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
PCContraSmeL_mdSmeL_md, А теперь понял Ваш набор букв. Если убрать все ваши телодвижения и отдать результат сразу js то и проблем с новым типом не будет :) Пробовал? Если в js отдавать массив результата, то через джсон_енкоде. А вот как не кодировать поле - вот вопрос Только что, выполнил ajax запрос и без преобразований отдал в js и вывел 1 элемент массива т.е. aa ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 10:57:00 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
SmeL_md, Проверил с Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 11:04:12 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
Electric200PCContra, Какая версия Postgres ? если 9.2 или ниже, то тип JSON для хранения - бесполезный. Разве что только, как сериализация хранения. Что бы быть уверенным что вы записали именно JSON а набор буков. Также ваш пример вполне логичен. Почему вы решили, что должны с "[\"aa\",\ "bbb\", \"cccc\"]" получить ассоциативный массив, не понятно. Ведь JSON предусматривает только как тип хранения, для дальнейшей работы с индексами по нему, поиском и тд тп. Но это плюшки с версии слона 9.3. Вы с Pg получаете строку, а не обьект. По этому, для начала избавтесь от слешей (stripslashes)и пропустите через json_encode и будет вам счастье. а PHP тут не виноват, он все делает правильно. Версия 9.3.4 Я хочу чтобы с Код: php 1. 2. 3. было: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. Да, думаю дело в PDO. Он работает только с двумерным массивом, а поля рассматривает как строки. Тут либо феч алл рассматривать с каким-нибудь параметрами (типа "дополнительно разобрать все поля как массив"), либо другой тип хранения данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 11:10:01 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
Попробовал тип array, тоже не то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 11:24:57 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
PCContra, Вы хотите модифицировать json объект для js? если да то нужен будет json_decode и потом json_encode, ну а если нет то и не трогайте его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 11:26:42 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
Помогает только костыли в виде: Код: php 1. 2. 3. 4. 5. 6. Т.е. надо заранее знать, какое поле у тебя json, какое -нет. Печаль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 11:41:06 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
Вот результат, какой я и ожидал: Но несмотря на это, хотелось бы обходиться без ручного декодирования элементов в массиве ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 11:43:50 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
PCContraНо несмотря на это, хотелось бы обходиться без ручного декодирования элементов в массивеТак не декодируйте заворачивайте Ваш фечОлл в json, Получив все это в js рассматривайте каждую строку как строку json, а не готовый json объект, но вы видимо не читаете мои ответы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 11:54:56 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
Вот еще второе решение, более изящное: Код: php 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 11:59:23 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
[quot SmeL_md]PCContra, Получив все это в js рассматривайте каждую строку как строку json, а не готовый json объект ну а далее-то в js мне надо работать с объектом: разложить все значения по <div>ам и так далее... Что мне делать с этим: это же строка, а не объект. Как в js взять из нее текст, допустим, с индексом 2 (три буквы "б") ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 12:40:21 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 12:43:10 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
[quot PCContra]SmeL_mdпропущено... ну а далее-то в js мне надо работать с объектом: разложить все значения по <div>ам и так далее... Что мне делать с этим: это же строка, а не объект. Как в js взять из нее текст, допустим, с индексом 2 (три буквы "б") ?Но вы же как то получили json объект :) а теперь тоже самое можно сделать для значения json объекта и Вы получите то что вам нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 12:47:35 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
SmeL_mdНо вы же как то получили json объект :) а теперь тоже самое можно сделать для значения json объекта и Вы получите то что вам нужно. 16194331 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 12:58:29 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
PCContraSmeL_mdНо вы же как то получили json объект :) а теперь тоже самое можно сделать для значения json объекта и Вы получите то что вам нужно. 16194331 И что Вы этим хотите сказать? что идея преобразовать строку json в объект, который потом просто поместить в архив и в конце все это опять завернуть json, вас не настораживает :) по поводу того как из строки получить json for ... jQuery.parseJSON( json_string ) Видимо пора закругляться, топик вообще ни как к postgresql не относиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 13:10:34 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
PCContrafetchAll вернул двухмерный массив(строки, поля). Я ожидаю ( и это разумно), что фечалл распетрушит и json объект и вернет вместо нет, это не разумно! выборка из базы, это масив строк, где каждая строка - масив елементов(полей/столбцов) и вовсе не логично , если поле содержит упакованные данные, чтобы оно само распаковывалось. а главное зачем? шифрованые данные тоже должны сами дешифроваться??? или их всётаки стоит дешифровать перед необходимостью получить самому??? есть тип геометрические фигуры - эти столбики что должы делать автоматически при ветч-асок??? вот многоугольник - во что должен сам превращаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 13:50:15 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
PCContraПомогает только костыли в виде: Код: php 1. 2. 3. 4. 5. 6. Т.е. надо заранее знать, какое поле у тебя json, какое -нет. Печаль полная ерунда. а если бы само распаковало в масив, можно было бы работать с масивом и незнать, где у вас джейсон? всмысле покажите запрос которым вы сделали запись в базу, понятия не имея где джейсон а где нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 13:55:58 |
|
||
|
Проблемы с новым типом данных JSON
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, Для такого результат как хочет автор, можно реализовать свой парсер на PLPG. Создал себе PLPg функцию, которая в качестве входящего параметра получает запрос, и возвращает текст. При выполнении запроса в теле функции, можно проверить тип данных. Если он JSON. то не сложными манипуляциями, в самом теле можно сформировать нужный JSON ответ с использованием row_to_json. Также можно привести hstore к JSON. Полученный ответ пропускаем через json_decode. И вуаля, на выходе имеем обьект/массив с учетом значений столбцов JSON. И самое главное с сохранением типов данных. Т.е если у меня где то столбец bool, то я в php тоже получу bool после json_decode, а не дескриптор в виде 'f' или 't'. Конечно приходится использовать EXECUTE. Но при формировании логики на процедурах, без него все равно не обойтись. Тут уже нужно исходит из ситуации, стоит ли игра свеч. Но зато, задача автора решается 100%. И не важно используете ли вы PDO или что то другое. Потому как с БД вы получает varchar который уже содержит сформированный JSON В PHP это может выглядеть так.: Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 13:26:46 |
|
||
|
|

start [/forum/topic.php?all=1&fid=53&tid=1998610]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 490ms |

| 0 / 0 |
