490 votes

Comment peuvent-elles être utilisées de façon positive?

Manuellement générer un objet JSON ou un tableau, il est souvent plus facile de laisser une virgule arrière sur le dernier élément dans l’objet ou le tableau. Par exemple, le code à la sortie d’un tableau de chaînes pourrait ressembler (dans un C++ comme pseudo-code) :

en vous donnant une chaîne comme

Est-ce permis ?

327voto

brianb Points 1017

Malheureusement, le JSON spécification ne permet pas une virgule. Il y a un peu de navigateurs qui permettent, mais en général, vous devez à vous soucier de tous les navigateurs.

En général, j'essaie de tourner le problème, et ajouter la virgule avant la valeur réelle, de sorte que vous vous retrouvez avec un code qui ressemble à ceci:

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("]");

Extra une ligne de code dans votre boucle for est peu cher...

Une autre alternative je l'ai utilisé lors de la sortie d'une structure JSON à partir d'un dictionnaire de quelque forme que ce est de toujours ajouter une virgule après chaque entrée (comme vous le faites ci-dessus), puis ajouter une entrée factice à la fin qui n'a pas virgule (mais c'est juste paresseux ;->).

Ne fonctionne pas bien avec un tableau, malheureusement.

154voto

Ben Combee Points 7193

N ° La spécification JSON, maintenue à json.org, ne permet pas les virgules. De ce que j’ai vu, certains analyseurs peuvent silencieusement leur permettre lors de la lecture d’une chaîne au format JSON, tandis que d’autres lèvera des erreurs. Pour l’interopérabilité, vous ne devrait pas inclure.

Le code ci-dessus pourrait être restructuré, à supprimer la virgule de fin lors de l’ajout de l’indicateur de fin de tableau ou d’ajouter la virgule avant éléments, que sauter pour la première.

120voto

Overflowee Points 477

Simple, bon marché, facile à lire et toujours fonctionne indépendamment de la fiche.

L’assignation redondante à $delim est un très petit prix à payer. Aussi fonctionne tout aussi bien s’il n’y a pas de boucle explicite mais des fragments de code distinct.

26voto

Tobu Points 10101

Virgules sont autorisés en JavaScript, mais ne fonctionne pas sous IE. Douglas Crockford de versionless JSON spec ne leur permet pas, et parce qu'il a été versionless ce n'était pas censé changer. L'ES5 JSON spec permis comme une extension, mais Crockford du RFC 4627 n'a pas, et ES5 est revenue à l'interdisant. Firefox a emboîté le pas. Internet Explorer est pourquoi nous ne pouvons pas nous avons de belles choses.

12voto

Rik Heywood Points 9034

Codeurs PHP pouvez vérifier implode (). Ceci prend un tableau rejoint il à l’aide d’une chaîne.

Depuis les docs...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X