2011-05-04 7 views
0
{title:'Alan', hasChild:true}, 
{title:'Alice', hasDetail:true}, 
{title:'Amos'}, 
{title:'Alonzo'}, 
{title:'Brad'}, 
{title:'Brent'},  
{title:'Billy'},  
{title:'Brenda'}, 
{title:'Callie'}, 
{title:'Cassie'}, 
{title:'Chris'}, 

Voici mes données de réponse JSON, maintenant comment ajouter un Header label aux premiers éléments de chaque donnée. Quelque chose de ce qui va me faire différencier que ce sont A, ce sont B.Ajout de l'étiquette à la réponse JSON

La réponse modifiée devrait ressembler à ceci.

{title:'Alan', hasChild:true, header:'A'}, 
    {title:'Alice', hasDetail:true},{title:'Alexander'}, 
    {title:'Amos'}, 
    {title:'Alonzo'}, 
    {title:'Brad', header:'B'}, 
    {title:'Brent'},  
    {title:'Billy'},  
    {title:'Brenda'}, 
    {title:'Callie', header:'C'}, 
    {title:'Cassie'}, 
    {title:'Chris'}, 
+1

Si vous voulez dire du côté client, il suffit de parcourir le tableau et ajouter des attributs que vous allez. Sinon, vous devrez fournir plus de détails. – HurnsMobile

+0

Ce n'est pas JSON.Il semble qu'il manque des crochets, a une virgule de fin, a le mauvais type de guillemets autour des valeurs, et pas de guillemets autour des clés. – Quentin

+0

Ne me ressemble pas à JSON. En outre, votre sortie proposée semble fortement sémantiquement douteuse. Si quelque chose, vous devriez avoir le champ 'header' dans le champ _each_, mais je ne vois vraiment pas le point ici. L'information existe déjà: comme la première lettre de chaque 'title'. –

Répondre

2

Votre code cité/balisage n'est pas JSON. (JSON requiert que les noms de propriété soient entre guillemets et que les littéraux de chaîne soient entre guillemets.) Il ressemble à un extrait du milieu d'un littéral de tableau JavaScript, où chaque entrée de tableau est définie par des littéraux d'objet. Par exemple:

var people = [ 
    {title:'Alan', hasChild:true}, 
    {title:'Alice', hasDetail:true}, 
    {title:'Amos'}, 
    {title:'Alonzo'} 
]; 

Je pense que dans votre question que vous avez fait deux choses entre les première et deuxième versions:

  1. Vous avez ajouté une propriété header à première entrée (« Alan ») (et à "Brad" et "Callie").
  2. Vous avez ajouté une nouvelle entrée "Alexander" entre "Alice" et "Amos".

Si vous avez une référence au tableau que ces littéraux définissent, vous pouvez ajouter des propriétés (# 1 ci-dessus) assez facilement:

people[0].header = 'A'; 

Cela crée une nouvelle propriété, header, sur l'objet à position 0 dans le tableau.

JavaScript a également une fonction pour insérer dans un tableau, appelé splice, que vous pouvez utiliser pour insérer dans un tableau au milieu (# 2 ci-dessus):

people.splice(2, 0, {title: 'Alexander'}); 

Cela dit: A partir de l'index 2 (l'entrée "Amos"), retirez les éléments 0, puis insérez celui-ci. Le changement est fait en place. Si ce que vous avez est vraiment une chaîne, contenant JSON, alors ajouter à cela est soit un exercice d'analyse et d'épissage de chaîne, soit une désérialisation du JSON dans un objet, en ajoutant les propriétés à l'objet, et le sérialiser à nouveau en JSON.


Voici un exemple du tableau ci-dessus sous forme JSON valide:

[ 
    {"title":"Alan", "hasChild":true}, 
    {"title":"Alice", "hasDetail":true}, 
    {"title":"Amos"}, 
    {"title":"Alonzo"} 
] 

C'est tel qu'il apparaîtrait dans un fichier enregistré au format JSON ou sur le fil. Si dans un littéral de chaîne dans le code de programme, bien sûr, il doit être dans la forme littérale de chaîne appropriée pour ce langage, avec le   — — d'échappement si nécessaire   — pour les guillemets doubles. Par exemple, que JSON en tant que chaîne de caractères littéral JavaScript:

var jsonString = '[' + 
    '{"title":"Alan", "hasChild":true},' + 
    '{"title":"Alice", "hasDetail":true},' + 
    '{"title":"Amos"},' + 
    '{"title":"Alonzo"}' + 
']';