Je récupère les données d’une google spreadsheet via l’API Google à l’aide de cURL en PHP. En utilisant une requête HTTP AJAX (via jQuery), je peux extraire toutes les données et les insérer dans un tableau, mais comme la ressemble à un JSON sale, je suis un peu coincé.
J’aimerais pouvoir référencer les données en tant qu’object JS, comme ceci:
alert(xml.feed.content.name);
Exemple de code:
$.ajax({ type: "GET", url: GtargetURL, dataType: "xml", success: function parseMyXML(xml){ var Ensortinges = new Array; var i = 0; $(xml).find("entry").each(function(){ var content = $(this).find("content").text(); Ensortinges[i]=content; i++; }); var myArray= new Array(); myArray= Ensortinges[1].split(","); alert (myArray[1]); // Result: "test2" } });
Exemple XML:
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gsx= relativeid: 4, name: test2, type: teset3, multiples: yes, cat: yes many more ensortinges...
Merci pour toute aide que vous pouvez offrir.
Pour ce que cela vaut, j’utilise ce format d’URL pour l’appel Google api:
https://spreadsheets.google.com/feeds/list/KEY-ID-HERE/1/public/basic
Je sais que je peux faire un appel “cellulaire” au lieu d’un appel “liste”, mais cela convient mieux à mes besoins.
Vous pouvez faire quelque chose comme ceci: http://jsfiddle.net/GVUnF/ http://jsfiddle.net/rMMkD/1/ dans votre boucle.
var jsonLikeSsortingng = "name:red, type:blue, multiples:green, cat:brown"; var jsObject = {}; var ssortingngWithoutSpaces = jsonLikeSsortingng.split(' ').join(''); var splitSsortingngs = ssortingngWithoutSpaces.split(","); var kvPairArray = []; for(var i in splitSsortingngs){ if(splitSsortingngs.hasOwnProperty(i)){ var kvPair = splitSsortingngs[i]; kvPairArray = kvPair.split(":"); jsObject[kvPairArray[0]] = kvPairArray[1]; } } alert(jsObject.cat);
Veuillez noter que
var foo = new Array;
n’est pas exactement idiomatique en javascript. Tu devrais utiliser
var foo = [];
au lieu.
Aussi, pour append à un tableau, vous devriez utiliser
foo.push('something');
au lieu d’avoir une variable i et de l’incrémenter à chaque boucle.
Votre question comporte deux parties:
Pour transformer XML en JSON, vous pouvez utiliser une bibliothèque telle que http://www.thomasfrank.se/xml_to_json.html
Ça tourne
Rufus labrador Marty whippet
Dans
{"animals": {"dog":[ {"name":"Rufus", "breed":"labrador"}, {"name":"Marty", "breed":"whippet"}], "cat": {"name":"Matilda"}}}
Ensuite, vous pouvez suivre la suggestion de TheShellfishMeme de tourner
relativeid: 4, name: test2, type: teset3, multiples: yes, cat: yes
Dans un object JSON