Mam następującą strukturę JSON:Jak wykonać iterację struktury JSON?
[{ "id":"10", "class": "child-of-9" }, { "id": "11", "classd": "child-of-10" }]
Jak iteracyjne nad nim przy użyciu jQuery lub JavaScript?
Mam następującą strukturę JSON:Jak wykonać iterację struktury JSON?
[{ "id":"10", "class": "child-of-9" }, { "id": "11", "classd": "child-of-10" }]
Jak iteracyjne nad nim przy użyciu jQuery lub JavaScript?
Zrobione z jQuery docs: przykład
var arr = [ "one", "two", "three", "four", "five" ];
var obj = { one:1, two:2, three:3, four:4, five:5 };
jQuery.each(arr, function() {
$("#" + this).text("My id is " + this + ".");
return (this != "four"); // will stop running to skip "five"
});
jQuery.each(obj, function(i, val) {
$("#" + i).append(document.createTextNode(" - " + val));
});
Jest to bardzo myląca składnia. Czy możesz to wyjaśnić? Czy możesz również podać dane wyjściowe? –
Odpowiedź powinna być podana w JavaScript, a nie w JQuery. –
@WayneHartman Sympatyzuję z twoim punktem widzenia, ale oryginalne pytanie mówi "jquery lub javascript". Wygląda na to, że błąd polegał na braku znacznika jquery na pytanie. – vlasits
MooTools:
var ret = JSON.decode(jsonstr);
ret.each(function(item){
alert(item.id+'_'+item.classd);
});
Można użyć mini bibliotekę jak objx - http://objx.googlecode.com/
można napisać kod tak:
var data = [ {"id":"10", "class": "child-of-9"},
{"id":"11", "class": "child-of-10"}];
// alert all IDs
objx(data).each(function(item) { alert(item.id) });
// get all IDs into a new array
var ids = objx(data).collect("id").obj();
// group by class
var grouped = objx(data).group(function(item){ return item.class; }).obj()
Są bardziej 'wtyczki' dostępne pozwalają obsługiwać dane, takie jak ten, patrz http://code.google.com/p/objx-plugins/wiki/PluginLibrary
var arr = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "classd": "child-of-10"}];
for (var i = 0; i < arr.length; i++){
var obj = arr[i];
for (var key in obj){
var attrName = key;
var attrValue = obj[key];
}
}
var arr = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "class": "child-of-10"}];
for (var i = 0; i < arr.length; i++){
document.write("<br><br>array index: " + i);
var obj = arr[i];
for (var key in obj){
var value = obj[key];
document.write("<br> - " + key + ": " + value);
}
}
uwaga: metoda in jest cool dla prostych obiektów. Niezbyt inteligentny w użyciu z obiektem DOM.
Nie zapomnij sprawdzić bezpośrednio wewnątrz pętli 'for key in obj'' obj.hasOwnProperty (key) '--- w innym dniu możesz znaleźć inne klucze działające w' obj', którego nie chcesz , jeśli ktoś przedłuży prototyp, na przykład ... – Funka
Hi mogę po prostu zapytać, czy chcę tego użyć, aby uzyskać zdalną tablicę Json, jak to zrobić? proszę, daj mi wskazówki! –
, ale arr nie jest JSON. –
Zastosowanie foreach:
<html>
<body>
<script type="text/javascript">
var mycars = [{name:'Susita'}, {name:'BMW'}];
for (i in mycars)
{
document.write(mycars[i].name + "<br />");
}
</script>
</body>
</html>
spowoduje:
Susita
BMW
Susita jest zmienną zależną od kultury, prawda? :-) – GilShalit
W prawo, zmienna najwyższego poziomu, taka jak BMW ;-) –
To jest regularna tablica, a nie JSON. – jonasespelita
Innym rozwiązaniem, aby poruszać się po dokumentach JSON jest JSONiq (realizowany w silniku Zorba), gdzie można napisać coś podobnego :
let $json := [ {"id":"10", "class": "child-of-9"},
{"id":"11", "class": "child-of-10"} ]
for $entry in jn:members($json) (: binds $entry to each object in turn :)
return $entry("class") (: gets the value associated with "class" :)
Można go uruchomić na http://www.zorba-xquery.com/html/demo#AwsGMHmzDgRpkFpv8qdvMjWLvvE=
Jeśli jest to Twoja dataArray
:
var dataArray = [{"id":28,"class":"Sweden"}, {"id":56,"class":"USA"}, {"id":89,"class":"England"}];
następnie:
$(jQuery.parseJSON(JSON.stringify(dataArray))).each(function() {
var ID = this.id;
var CLASS = this.class;
});
Najlepsza odpowiedź przy użyciu JQuery. Koduje dane z backendu za pomocą AJAX, więc nie użyłem funkcji "stringify". Kod jasny i piękny! – danigonlinea
Z zagnieżdżonych obiektów, można go pobrać za pomocą funkcji rekurencyjnej:
function inside(events)
{
for (i in events) {
if (typeof events[i] === 'object')
inside(events[i]);
else
alert(events[i]);
}
}
inside(events);
gdzie jako zdarzenia znajduje się obiekt json.
Świetnie. Wystarczy, aby to wspomniano; jeśli odczytasz zmienną (i), możesz uzyskać nazwy właściwości (na ile to jest warte) – netfed
To jest czysty komentarz do JavaScript.
<script language="JavaScript" type="text/javascript">
function iterate_json(){
// Create our XMLHttpRequest object
var hr = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
hr.open("GET", "json-note.php", true);//this is your php file containing json
hr.setRequestHeader("Content-type", "application/json", true);
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var data = JSON.parse(hr.responseText);
var results = document.getElementById("myDiv");//myDiv is the div id
for (var obj in data){
results.innerHTML += data[obj].id+ "is"+data[obj].class + "<br/>";
}
}
}
hr.send(null);
}
</script>
<script language="JavaScript" type="text/javascript">iterate_json();</script>// call function here
Marki Marquis Wang może być najlepszą odpowiedzią podczas korzystania z jQuery.
Oto coś bardzo podobnego w czystym JavaScript, używając metody JavaScript forEach
. forEach przyjmuje funkcję jako argument. Funkcja ta będzie następnie wywoływana dla każdego elementu w tablicy, z wymienioną pozycją jako argumentem.
Krótkie i proste:
<script>
var results = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "classd": "child-of-10"}];
results.forEach(function(item) {
console.log(item);
});
</script>
Proszę dać mi znać, jeśli to nie jest łatwe:
var jsonObject = {
name: 'Amit Kumar',
Age: '27'
};
for (var prop in jsonObject) {
alert("Key:" + prop);
alert("Value:" + jsonObject[prop]);
}
Twój obiekt jsonObject nie jest prawdziwym obiektem JSON. Jest to obiekt javascript.Właśnie dlatego to działa. Jednak jeśli ktoś ma obiekt JSON, może go przekonwertować na obiekt JS, a następnie użyć swojej metody. Aby przekonwertować obiekt JSON na obiekt JS, użyj jsObject = JSON.parse (jsonObject); – prageeth
Jeśli uzyskałeś dane przez jQuery.getJSON(), działa to dobrze. –
var jsonString = "{\"schema\": {\"title\": \"User Feedback\", \"description\":\"so\", \"type\":\"object\", \"properties\":{\"name\":{\"type\":\"string\"}}}," +
"\"options\":{ \"form\":{\"attributes\":{}, \"buttons\":{ \"submit\":{ \"title\":\"It\", \"click\":\"function(){alert('hello');}\" }}} }}";
var jsonData = JSON.parse(jsonString);
function Iterate(data)
{
jQuery.each(data, function (index, value) {
if (typeof value == 'object') {
alert("Object " + index);
Iterate(value);
}
else {
alert(index + " : " + value);
}
});
};
Iterate(jsonData);
Powinieneś wyjaśnić swój kod. Odpowiedź bez wyjaśnienia niewiele pomaga. – Reeno
skopiowany i wklejony z http://www.w3schools.com, nie ma potrzeby obciążania jQuery.
var person = {fname:"John", lname:"Doe", age:25};
var text = "";
var x;
for (x in person) {
text += person[x];
}
WYNIK: John Doe 25
http://stackoverflow.com/questions/1050674/fastest-way-to-iterate-through-json-string-in-javascript – Max
"jquery lub javascript" ? jquery jest napisane w javascript! –
Powinien to być "jQuery lub czysty JavaScript". – rsb2097