Можно ли использовать запаздывающую запятую в объекте JSON?

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

370
задан pkamb 11 December 2017 в 14:21
поделиться

6 ответов

К сожалению спецификация JSON не позволяет запаздывающую запятую. Существует несколько браузеров, которые позволят его, но обычно необходимо волноваться обо всех браузерах.

В целом я пробую, изменяют к лучшему проблему и добавляют запятую перед фактическим значением, таким образом, Вы заканчиваете с кодом, который похож на это:

s.append("[");
for (i = 0; i < 5; ++i) {
  if (i) s.append(","); // add the comma only if this isn't the first entry
  s.appendF("\"%d\"", i);
}
s.append("]");

, Что дополнительный одна строка кода в Вашем для цикла является едва дорогой...

Другая альтернатива я использовал, когда произведено, структура к JSON из словаря некоторой формы должна всегда добавлять запятую после каждой записи (как Вы делаете выше), и затем добавьте фиктивную запись в конце, который не имеет запаздывания запятой (но это просто лениво;->).

не работает хорошо с массивом, к сожалению.

235
ответ дан chharvey 23 November 2019 в 00:05
поделиться

Я обычно цикл по массиву и присоединению запятая после каждой записи в строке. После цикла я удаляю последнюю запятую снова.

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

0
ответ дан Nils 23 November 2019 в 00:05
поделиться

Интересно, оба C & C++ (и я думаю C#, но я не уверен), конкретно позволяют запаздывающую запятую - по точно приведенной причине: Это входит в программируемо генерирующие намного легче списки. Не уверенный, почему JavaScript не последовал их примеру.

7
ответ дан James Curran 23 November 2019 в 00:05
поделиться

Кодеры PHP могут хотеть проверить , интегрируются () . Это берет соединения массива это использование строки.

От эти документы ...

$array = array('lastname', 'email', 'phone');
echo implode(",", $array); // lastname,email,phone
14
ответ дан NullUserException 23 November 2019 в 00:05
поделиться

Нет. Спецификация JSON, утвержденная в http://json.org , не позволяет запаздывать запятые. Из того, что я видел, некоторые синтаксические анализаторы могут тихо позволить им при чтении строки JSON, в то время как другие бросят ошибки. Для совместимости Вы не должны включать его.

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

128
ответ дан vaxquis 23 November 2019 в 00:05
поделиться

Как указано это не позволяется. Но в JavaScript это:

var a = Array()
for(let i=1; i<=5; i++) {
    a.push(i)
}
var s = "[" + a.join(",") + "]"

(хорошо работает в Firefox, Chrome, Краю, IE11, и без впущенного IE9, 8, 7, 5)

-1
ответ дан 23 November 2019 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: