Анонимные объекты и массивы в json

LeoKee

Новичок
Анонимные объекты и массивы в json

Всем доброго времени суток.
Часто сталкиваюсь с задачкой сформировать json строчку (для extJs например) с анонимными объектами или массивами с анонимными ключами вида:
Код:
[{id: 'company', header: 'Company', width: 200, sortable: true, dataIndex: 'company'},
  {id: 'company', header: 'Company', width: 200, sortable: true, dataIndex: 'company'}]
json_encode не справляется с этой задачей ввиду вставки имени объекта или ключа массива... да и вообще он работает както "странно" - в аргументе ассоц массив, а он обрамляет его в объектные скобки { } js

кто как решает данную проблему?

PS прошу не предлагать составлять json путем конкатенации
 

whirlwind

TDD infected, paranoid
что значит с анонимными ключами? скачай extjs и открой например examples/restful
там все есть, все прекрасно работает
 

LeoKee

Новичок
вопрос стоит конкретно, extJs привел просто для примера

массив с анонимными ключами
Код:
[['one','sadf','5rtwfg'],[4,7,8,[345,2345,34]]]
whirlwind - что то не так?
 

LeoKee

Новичок
Re: Анонимные объекты и массивы в json

Автор оригинала: LeoKee
json_encode не справляется с этой задачей ввиду вставки имени объекта или ключа массива... да и вообще он работает както "странно" - в аргументе ассоц массив, а он обрамляет его в объектные скобки { } js
 

Beavis

Banned
LeoKee
так ассоциативный массив и такой {} объект в js это как бы аналоги.. естесственно что он преобразует из array("a" => "b") в {a: 'b'}
 

LeoKee

Новичок
Beavis
почему бы не преобразовывать ассоц массив в массив, а не в объект? помоему это правильнее... и ничего естественного в этом нет..
 

whirlwind

TDD infected, paranoid
LeoKee

[m]json_encode[/m]

PS. обязательно надо сказать - смотри примеры? иначе не доходит?
PPS. да тебе и про типы javascript для начала прочитать надо
 

LeoKee

Новичок
whirlwind
про типы мне прочитать не надо, укажи, что я написал про типы не так... то, что "так ассоциативный массив и такой {} объект в js это как бы аналоги.." это ежу понятно...

а вот в примеры не посмотрел, это да

-~{}~ 24.09.09 19:14:

5.3.0 The $options parameter was added.
Так что эти примеры не катят... :(
 

whirlwind

TDD infected, paranoid
json_encode работает как ей положено. Ты ошибаешься, если думаешь что она телепатическим образом будет угадывать, когда тебе нужны ключи, а когда не нужны.
 

LeoKee

Новичок
Да не смотрю я в сторону json_encode - написал же уже! И не заставляю "угадывать" json_encode что мне нужно. Любое сторонее решение с отключением ключей подойдёт.
Проблема решена правкой Services_JSON
 

whirlwind

TDD infected, paranoid
ппц, далеко пойдешь :)

PHP:
$assoc = array(
    'id' => 123,
    'bar' => 'test',
    'foo' => 'buzz',
);

echo json_encode($assoc),"\n";
echo json_encode(array_values($assoc)),"\n";
 

LeoKee

Новичок
fixxxer
Чтото похожее, но тока array_map (реализация Services_JSON.php)

-~{}~ 24.09.09 20:12:

whirlwind
а теперь примени это, далеко идущий, к массиву и объектам произвольной вложенности. ппц умник
 

whirlwind

TDD infected, paranoid
это вместо спасибо? может тебе еще и ключ от квартиры где деньги лежат?

PS. всегда знал, что борландовские продукты до добра не доведут
 

LeoKee

Новичок
спасибо? за что? азбуку я и так знаю :D

-~{}~ 24.09.09 20:18:

а вот вы молодой человек видимо решили "сверкнуть" знаниями
 

vovanium

Новичок
LeoKee
Что-то ты путаешь
PHP:
$a = array(array('id' => 'company', 'header' => 'Company', 'width' => 200, 'sortable' => true, 'dataIndex' => 'company'),
  array('id' => 'company', 'header' => 'Company', 'width' => 200, 'sortable' => true, 'dataIndex' => 'company'));
в json_encode как раз дает
Код:
[{"id":"company","header":"Company","width":200,"sortable":true,"dataIndex":"company"},{"id":"company","header":"Company","width":200,"sortable":true,"dataIndex":"company"}]
то же самое что ты написал, только кавычки другие и ключи тоже в кавычках.
 

vovanium

Новичок
LeoKee
Так какой смысл приводить левый пример? Привел бы пример что есть в php и что ты хочешь получить в js. И не было бы лишних вопросов.
 

LeoKee

Новичок
Если массив составляется не конструкцией вида:
...
$s[] = $primer;
а с указанием ключа, то этот массив json_encode возвращает в виде {"s":{"1":"15", .... и тд
 
Сверху