2012-05-25 16 views
9

Podejrzewam, że jest to łatwy problem, ale jestem trochę nowy w js i nie mogę znaleźć rozwiązania.Łańcuch JSON jest traktowany jako ciąg znaków w pętli

Po przekazaniu łańcucha JSON do funkcji, a następnie próbie iteracji za pomocą przekazanej zmiennej, traktuje się ją raczej jak ciąg literowy, a nie tablicę.

Dzięki tej funkcji:

function build_codes_long(codes) { 
    var codes_long_text = ""; 
    for(var i =0;i < codes.length-1;i++) { 
     var code = codes[i]; 
     codes_long_text += "<p>" + code['id'] + " = " + code['del'] + "</p>"; 
    } 
return codes_long_text; 
} 

Kiedy mijam ciąg JSON się podoba:

[{"id":"1","del":"0","clip":"1"},{"id":"2","del":"0","clip":"1"}] 

Ocenia każdy znak w łańcuchu, zamiast każdego elementu w tablicy. Więc to pętle 65 razy zamiast 2, wracając coś takiego:

undefined = undefined 

Rozumiem problem ze zwracanych wartości; traktuje tablicę jak ciąg literalny, którego nie rozumiem. Dzięki!

Odpowiedz

11

To dlatego, że nie przechodzisz przez obiekt; przeplatasz ciąg znaków i otrzymujesz każdą literę jako wynik.

Trzeba przekonwertować ciąg JSON do pierwszego obiektu:

var myObject = JSON.parse(myJsonString); 
var codesLongText = build_codes_long(myObject); 
+0

, że to zrobił. Dzięki! –

Powiązane problemy