2016-07-20 10 views
0

Ich möchte ein JSON-Objekt in ein Array transformieren.JSON-Objekt in JavaScript-Array lesen und transformieren

ist mit einem PHP-Skript eine JSON-Datei mit diesem Code zu erstellen:

$stores = array(); 
$i=0; 
$reponse = $bdd->query('select * from store '); 
while ($donnees = $reponse->fetch()) 
{ 
    $stores[$i] = $donnees; 
    $i++; 
} 

var_dump($stores); 

$fp = fopen('results.json', 'w'); 
fwrite($fp, json_encode($stores)); 
fclose($fp); 

In meiner JS-Datei ist diesen Code unter Verwendung die Daten zu laden:

var json_obj = $.getJSON("results.json", function (data) { 
    json_obj = data; 
    return json_obj; 
}); 

alert(JSON.stringify(json_obj)); 

Jetzt will ich verwandeln mein JSON-Objekt in ein JavaScript-Array. Aber in bestimmten Weise:

var props=[] ; 

props.push({title:json_obj[0].name,Data:json_obj[0].Description}); 
props.push({title:json_obj[1].name,Data:json_obj[1].Description}); 


$.each(props, function (i,v) 
{ 
    console.log(i,v); 
}); 
+0

Arrays in Javascript muss Index haben, bei 0 beginnen und keine Lücken haben. –

+0

Entschuldigung, aber ich habe dich nicht verstanden. –

+0

bedeutet es: wenn Sie "array [0] .title" sagen, dann wird der Eintrag bei offset 0 ein Objekt –

Antwort

2

Sieht aus wie Sie einfach die json in Ihre var Requisiten analysieren kann das Array-Objekt zu erstellen ...

var props = JSON.parse(json_obj); 

Requisiten ist jetzt ein Objekt js Array gebaut von Ihrem JSON-String-Parsing .. .

EDIT: vorgeschlagene Änderung Ihre js zu

Datei
var props = []; 
$.getJSON("results.json", function (data) { 
    $.each(data, function(index) { 
     props.push({title:data[index].name,Data:data[index].Description}); 
    }); 
}); 

alert(props); 

den Rest des Codes auslassen, um neue Schub Array ... nur Abmelden Requisiten ...

+0

wenn es verwendet es gab mir VM2554 : 1 Uncaught SyntaxError: Unerwartetes Token o in JSON an Position 1 –

+0

Entschuldigung ... Ihre getJSON-Funktion gibt ein JSON-Objekt über Ajax zurück ... Keine Notwendigkeit zu mappen oder zu analysieren ... einfach die Teile in Ihr neues Array per khem's Ratschlag schieben ... dann können Sie Ihr Array auf der Konsole anmelden ... – Tim

+0

es sagt - app.js: 85 - Uncaught TypeError: Kann Eigenschaft 'Name' von undefined –

0

Sie müssen Array definieren und schieben Elemente hinein, , warum Sie nicht versuchen, so etwas wie diese

var someArray=[] 
someArray.push({title:props[0].name,Data:props[0].Description}) 
someArray.push({title:props[1].name,Data:props[1].Description}) 

Aber es ist nicht eine gute Idee, wenn Sie wissen DONot die Länge der Stützen Array

json Objekt in Array konvertieren Sie Schleife durch json Objekt sollte und schieben einzelne Element in eine Array

var someArray = [] 
for(var key in json_object){ 
if(json_object.hasOwnProperty(key)){ 
    var tmpObj={title:json_object[key].name,Data:json_object[key].Description} 
    someArray.push(tmpObj) 
    console.log(someArray) 
} 
} 

Dank

+0

Ich verstehe dich irgendwie, aber wie kann ich den Inhalt des neuen Arrays warnen und sehen, ob es funktioniert hat! –

+0

Verwenden Sie console.log(), keine Warnung –

+0

Ich verwendete $ .Each (Requisiten, Funktion (i, v) { console.log (i, v); }); aber es sagt Uncaught TypeError: Kann nicht lesen Eigenschaft 'Name' von undefined –