2017-09-10 1 views
1

je le JSON suivant attribué directement à une variable JS:Subscript JSON

{ 
    "name": "NaHCO3", 
    "parent": "Top Level", 
    "_children": [ 
     { 
      ... 
     }, 
    ] 
}, 

Avec l'attribut name, je veux que ce soit NaHCO , pas NaHCO3. Comment puis-je y parvenir?
J'ai essayé de chercher une entité HTML pour cela, mais il semble qu'il n'y en a pas.

+1

Vous devez soit stocker au format HTML (en utilisant '') ou utiliser une bibliothèque tierce pour analyser les noms chimiques dans des formats d'affichage appropriés. – Terry

Répondre

1

JSON n'est pas un langage de balisage. Donc, il ne se soucie pas de savoir ce que sont les valeurs qu'il porte. Somstimes vous pouvez utiliser des entités UTF comme il y a des tonnes de divers symboles en UTF (comme subscript three vous recherchez):

{ 
    "name": "NaHCO₃", 
    ... 
}, 

Mais si vous voulez certaines fonctionnalités de balisage en général, vous devez choisir la façon d'y parvenir, puis formater la valeur stockée pour l'utiliser. C'est à dire. vous pouvez utiliser des balises HTML ou démarques, etc.

3

Utilisez simplement le caractère ₃ ou \u2083.

\u2083 est ce que PHP utilise pour encoder en JSON:

$mol_encoded = json_encode(html_entity_decode('NaHCO₃')); 
$mol_decoded = json_decode($mol_encoded); 

echo "$mol_encoded\n$mol_decoded"; 

retours:

"NaHCO\u2083" 
NaHCO₃ 

et à JS JSON.parse('"NaHCO\u2083"') retours "NaHCO₃"

+0

Pas exactement ce que je voulais, mais cela semble correct. +1 de toute façon. –

+0

C'est la façon dont PHP encode dans JSON par exemple, une fois que vous l'extrayez, il revient à une chaîne lisible, voir ma réponse éditée. – antoni