Ответ 1
В объявлении массива
var count_review= new Array()
вместо этого используйте
var count_review={};
Это работает!
Зачем возвращать JSON.stringify()
:
[]
То же самое происходит с jQuery: $.JSON.encode()
Что может быть причиной этого? Я передаю простой массив объектов, где каждый объект имеет свойства строки. Я зациклился и предупредил о свойствах каждого объекта, и все выглядит нормально, но по какой-то причине оба метода кодирования возвращают []
.
В объявлении массива
var count_review= new Array()
вместо этого используйте
var count_review={};
Это работает!
если ваш массив объявляет как значение "String" возвращает значение null
var array = [];
array['name'] = 'johan';
array['age'] = 20;
alert(JSON.stringify(array))// return []
но если массив объявляет как "int" возвращает строку json
var array = [];
array[0] = 'johan';
array[1] = 20;
alert(JSON.stringify(array))// return["johan",20]
В то время как ответы выше верны, чтобы полностью понять, что это определенно нуждается в большем контексте.
JSON - это универсальный формат (в смысле поддержки нескольких, надеюсь, всех языков программирования), который не является полностью отображением объектов JavaScript на 1-к-1.
Итак, основная причина, почему это происходит, заключается в том, что в JSON (как указано RFC 7159) в JavaScript нет ассоциативных массивов Array
sense - т.е. массивы, ключи которых являются строками. Поскольку чтение RFC-спецификаций может быть довольно трудоемким, его можно легко увидеть поверх JSON.org, где он говорит (некоторые акцент ниже мой):
JSON построен на двух структурах:
- Коллекция пар имя/значение. На разных языках это реализуется как объект, запись, структура, словарь, хэш-таблица, список клавиш или ассоциативный массив.
- Упорядоченный список значений. В большинстве языков это реализуется как массив , вектор, список или последовательность.
Это универсальные структуры данных. Практически все современные языки программирования поддерживают их в той или иной форме. Имеет смысл, что формат данных, который является взаимозаменяемым с языками программирования, также основывается на этих структурах.
В JSON они принимают следующие формы:
Объектом является неупорядоченный набор пар имя/значение. Объект начинается с
{
(левая скобка) и заканчивается на}
(правая фигурная скобка). За каждым именем следует:
(двоеточие), а пары имя/значение разделяются символом,
(запятая).
Массив - это упорядоченный набор значений. Массив начинается с
[
(левая скобка) и заканчивается на]
(правая скобка). Значения разделяются символом,
(запятая).
Функция JSON.stringify
обрабатывает это таким образом, что предполагается, что массив предназначен для массива, а все ключевые записи являются аннотативными, так же, как и элементы, являющиеся объектами функций, они просто выкидываются из представления JSON. возвращается. К сожалению, это поведение не задокументировано четко и легко понятным образом в неофициальной ссылке JavaScript, которая MDN на сегодняшний день (2017-09- 04), так что вот некоторые низко висящие фрукты, если вы хотите помочь ol 'Mozilla.