2009-11-09 10 views
6

Nie mogę znaleźć jednego sposobu, aby uzyskać tę wartość ("komentarz") do json za pomocą javascript.Znajdź wartość w Json przez javascript

var myJSONObject = { 
    "topicos": [{ 
     "comment": { 
      "commentable_type": "Topico", 
      "updated_at": "2009-06-21T18:30:31Z", 
      "body": "Claro, Fernando! Eu acho isso um extremo desrespeito. Com os celulares de hoje que at\u00e9 filmam, poder\u00edamos achar um jeito de ter postos de den\u00fancia que receberiam esses v\u00eddeos e recolheriam os motoristas paressadinhos para um treinamento. O que voc\u00ea acha?", 
      "lft": 1, 
      "id": 187, 
      "commentable_id": 94, 
      "user_id": 9, 
      "tipo": "ideia", 
      "rgt": 2, 
      "parent_id": null, 
      "created_at": "2009-06-21T18:30:31Z" 
     } 
    }] 
}; 

Próbuję przykładem takiego:

alert(myJSONObject.topicos[0].data[0]); 

Niektóre ciała może mi pomóc?

JSON jest z Ruby on Rails aplikacji, używając render :json => @atividades.to_json

TKS dużo! Marqueti

Odpowiedz

13

Twój JSON jest sformatowana w taki sposób, że jest to bardzo trudne do odczytania, ale wygląda mi na to, czego szukasz:

alert(myJSONObject.topicos[0].comment); 

to, ponieważ nie ma data klucz w obiekcie podanym przez ...topicos[0], a raczej po prostu klucz comment. Jeśli potrzebujesz dalszych kluczy po tym, kontynuuj: obj.topicos[0].comment.commentable_type.

Aktualizacja

Aby dowiedzieć się co klucze są w topicos[0] można wziąć kilka podejść:

  1. użyć przełącznika lub jeśli tak:

    var topic = myJSONObject.topicos[0]; 
    if(topic.hasOwnProperty('comment')) { 
        // do something with topic.comment 
    } 
    
  2. Możesz mieć tutaj problemy z kompatybilnością z przeglądarkami, więc użyj biblioteka jak jQuery byłoby pomocne, ale w ogóle można mapować nad właściwościami tak:

    for(var key in myJSONObject.topicos[0]) { 
        // do something with each `key` here 
    } 
    
+0

się o krok dalej, można zrobić coś takiego: się lert (myJSONObject.topicos [0] .comment.commentable_type); – Mercurybullet

+0

Przejdź do niego @ Daniel! :) – rfunduk

+0

Tks za odpowiedzi. Potrzebuję uzyskać kluczowy ciąg "komentarz". Ponieważ mogę również otrzymać inny typ. Coś takiego: myJSONObject.topicos [0]. Ludzie lub myJSONObject.topicos [0] .support A potem zrobię trochę Jeśli sformatować prawidłowe wyjście. tks! – mmarqueti

1

To powinno działać:

alert(myJSONObject.topicos[0].comment); 

Jeśli chcesz możesz pętlę przez tak :

for (var key in myJSONObject.topicos[0]) 
{ 
    alert(key); 
    if (key == 'comment') 
    alert(myJSONObject.topicos[0][key]); 
} 
Powiązane problemy