Tableau JSON dans Node.js

J’essaie de comprendre cela depuis une semaine et tout ce que j’essaie ne semble tout simplement pas fonctionner.

Je dois créer un service Web sur ma boîte locale qui répond aux demandes. Le client (que je n’ai pas écrit) posera à mon service une question à la fois, à laquelle mon serveur devra répondre avec une réponse appropriée.

Donc, la dernière chose que je dois faire est:

En passant par le sentier et l’erreur, j’ai découvert que les parameters fournis sont:

{"theArray":"[[],\"d\",\"B\",{},\"b\",12,\"A\",\"c\"]"} 

J’ai essayé beaucoup de choses différentes pour essayer de faire fonctionner cela. Mais la chose la plus proche que je puisse obtenir est qu’il ne retourne que la même chose ou rien du tout. C’est le code que j’utilise pour obtenir ces résultats:

 case '/sort': if (req.method == 'POST') { res.writeHead(200,{ 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }); var fullArr = ""; req.on('data', function(chunk) { fullArr += chunk; }); req.on('end', function() { var query = qs.parse(fullArr); var ssortingn = qs.ssortingngify(query.theArray) var jArr = JSON.parse(fullArr); console.log(jArr); // Returns undefided:1 var par = query.theArray; console.log(par); // returns [[],"d","B",{},"b",12,"A","c"] function censor(key) { if (typeof key == "ssortingng") { return key; } return undefined; } var jsonSsortingng = JSON.ssortingngify(par, censor); console.log(jsonSsortingng); // returns "" }); res.end(); }; break; 

Juste pour clarifier ce dont j’ai besoin pour revenir, c’est ["d","B","b","A","c"]

Donc, si quelqu’un peut m’aider, s’il vous plaît, et si possible, répondez avec un code écrit qui est un peu configuré d’une manière qui fonctionnerait déjà avec la façon dont mon code a été configuré, ce serait génial! Merci

Edit: Essayez ceci:

 var query = {"theArray":"[[],\"d\",\"B\",{},\"b\",12,\"A\",\"c\"]"}; var par = JSON.parse(query.theArray); var ssortingngArray = []; for ( var i = 0; i < par.length; i++ ) { if ( typeof par[i] == "string" ) { stringArray.push(par[i]); } } var jsonString = JSON.stringify( stringArray ); console.log(jsonString); 

PS je n'ai pas fait attention. Votre tableau était en fait une chaîne. Andrey, merci pour le tuyau.

Le paramètre JSON.ssortingngify de JSON.ssortingngify ne fonctionne pas exactement comme vous l’utilisez. consultez la documentation sur MDN .

Vous pouvez utiliser Array.prototype.filter pour filtrer les éléments que vous ne voulez pas:

 var arr = [[],"d","B",{},"b",12,"A","c"]; arr = arr.filter(function(v) { return typeof v == 'ssortingng'; }); arr // => ["d", "B", "b", "A", "c"] 

edit: one-liner (essayez-le dans repl!)

 JSON.ssortingngify(JSON.parse(require('queryssortingng').parse('theArray=%5B%5B%5D%2C"d"%2C"B"%2C%7B%7D%2C"b"%2C12%2C"A"%2C"c"%5D').theArray).filter(function(el) {return typeof(el) == 'ssortingng'})); 

code à coller sur votre serveur:

 case '/sort': if (req.method == 'POST') { buff = ''; req.on('data', function(chunk) { buff += chunk.toSsortingng() }); res.on('end', function() { var inputJsonAsSsortingng = qs.parse(fullArr).theArray; // fullArr is x-www-form-urlencoded ssortingng and NOT a valid json (thus undefined returned from JSON.parse) var inputJson = JSON.parse(inputJsonAsSsortingng); var ssortingngsArr = inputJson.filter(function(el) {return typeof(el) == 'ssortingng'}); res.writeHead(200,{ 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }); res.end(JSON.ssortingngify(ssortingngsArr)); }; break;