2010-12-07 11 views
0

Je ne parviens pas à créer une chaîne JSON au format suivant, s'il vous plaît, aidez-moi. Où paire de valeurs clé peut être un nombre:Besoin d'aide pour créer une chaîne JSON en javascript

"tag_container": { "tag1": "Tag1", "tag2": "Tag2", ..... } 
var uploaded = new Uploaded(); 
var str = "*#Hello* i *#am* writing a regexp *#h*"; 
var re = hash_parser(str); 
uploaded.tag_list = new Array; 
uploaded.tag_list.tag = new Array; 

for(var i = 0; i < re.length; i++) 
{ 
    uploaded.tag_list[i] = new Object; 
    uploaded.tag_list[i].**tag** = re[i]; 
} 

code ci-dessus est de donner au format suivant:

"tag_list":[{"**tag**":"*#Hello*"},{"**tag**":"*#am*"},{"**tag**":"*#h*"}] 
+1

Désolé, pouvez-vous expliquer un peu plus? Tout d'abord, le code ne crée aucune chaîne. Deuxièmement, quel est le problème avec le format de sortie? – deceze

+0

Votre code n'a pas de sens. Les tableaux sont créés comme suit: 'uploaded.tag_list = []' ou comme ceci: 'uploaded.tag_list = new Array()'. De même, les objets sont créés comme '{}' ou 'new Object()'. Vous semblez aussi confus à propos de JSON. Vouliez-vous envelopper vos exemples JSON dans des guillemets simples? Comme ceci: '' "tag_container": {"tag1": "Tag1", "tag2": "Tag2", .....} '' –

+0

merci pour la réponse rapide que je suis capable de générer dans" tag_list ": ["#Hello", "# am", "# h"] en javascript dans le formulaire suivant mais j'ai besoin de ce formate "tag_list": {"tag1": "#Hello", "tag2": "#am", .....} – druveen

Répondre

3

Je pense que vous pourriez peut-être JSON confusion avec l'objet syntaxe littérale.

Au lieu de:

"tag_container": { "tag1": "Tag1", "tag2": "Tag2", ..... } 

vous devriez juste être en utilisant la syntaxe normale JS:

var tag_container = { "tag1": "Tag1", "tag2": "Tag2", ..... } 

... mais il est vraiment difficile de dire à partir de votre poste. Si vous connaissez quelqu'un qui peut vous aider avec votre anglais, cela pourrait m'aider (et d'autres) à mieux comprendre cette question.

0

La façon la plus simple de convertir quelque chose en JSON est d'utiliser JSON.stringify.

var jsonString = JSON.stringify({ tag_container: { tag1: 'tag1', tag2: 'tag2' }}); 

stringify est disponible dans tous les navigateurs modernes. Si vous souhaitez prendre en charge les anciennes versions, le JSON2 library est peut-être le meilleur choix car il fournit la même API que la spécification JSON officielle.

0

Je pense que ce que vous essayez de faire quelque chose comme ceci:

var reLen = re.length; 
uploaded.tag_list = {}; 

for(var i = 0; i < reLen; i++) 
{ 
    uploaded.tag_list['tag' + (i+1)] = re[i]; 
} 

Ceci affichera le format que vous souhaitez voir, par exemple

'"tag_container": {"tag1": "*#Hello*", "tag2": "*#am*", "tag3": "*#h*"}' 
-1

Merci à tous pour la toute réponse et guider mon problème est résolu d'une autre manière J'envoie une chaîne json pour traverser le domaine

string = "hi @group1 @group2 *user1 *user2 #fs #ffsd #fsdf"; 

et généré jso n chaîne est

{"raw_msg":"hi @group1 @group2 *user1 *user2 #fs #ffsd #fsdf","msg_type":"group","top_msg_id":0,"file_container":{"file1":{"id":"","file_name":"","uri":""},"file2":{"id":"","file_name":"","uri":""}},***"tag_list":["fs","ffsd","fsdf"]***,"link_list":"","image_container":{"image1":{"id":"","name":"Name","uri":""},"image2":{"id":"","name":"Name","uri":""}},"attached_thread":{"thread1":{"title":"","top_id":"","last_id":""},"thread2":{"title":"","top_id":"","last_id":""}},"to_user":["user1","user2"],"to_group":["group1","group2"]}