web-dev-qa-db-ja.com

ノードjsでJSON配列を作成する

ノードjsで記述されたサーバーで、このリクエスト時にクライアントに送信されるJSON文字列を作成する必要があります。問題は、このJSONはサーバーで使用可能なデータに依存するため、JSON配列のサイズが常に同じではないことです。私は一日中試してみましたが、私は近くにいるように感じますが、私はまだそれを取得できません。

クエリの例を次に示します。

json={"players":[
            {"name":"Messi", "goals":8},            
            {"name":"Ronaldo", "goals":22},
            {"name":"Costa", "goals":20},
            {"name":"Neymar", "goals":13},
            {"name":"Arabi", "goals":6},
            {"name":"Bale", "goals":3},
            {"name":"Toquero", "goals":0}]};

次の方法でサーバーに送信します。

res.contentType('application/json');
res.send(json);

私が作成したいJSON配列は、プレーヤー名がキーであり、ゴールの数が値である「ゴール」と呼ばれるハッシュに依存します。したがって、プレーヤーが3人しかない場合、JSON配列のサイズはこのサイズのみにする必要があります。

私はこのようにオンラインでJSON配列を作成しようとしています:

result= "";
for(i in goals){
    result = result+ '{ name:' + i + ", goals:" + goals[i] + '},';
}
result= result.substring(0, result.length - 1); 
res.contentType('application/json');
res.send( { 'players': [ result]});

ただし、クライアントはサイズ1のJSONのみを受け取ります

Object {jugadores: Array[1]}

jugadores:Array [1] 0: "{nombre:Messi、goles:8}、{nombre:Ronaldo、goles:16}、{nombre:Costa、goles:10}、{nombre:Toquero、goles:0}、{ nombre:Arabi、goles:2}、{nombre:Bale、goles:10}、{nombre:Neymar、goles:8} "長さ:1

事前に感謝します、私はこれで本当に苦労しています:(

編集:私は今、これをやっているとストリングでやってみますが、運はありません。何が間違っていますか?

result= "players:[";
for(i in goals){
    result= result+ '{ name:' + i + ", goals:" + goals[i] + '},';
}

result= result.substring(0, resultado.length - 1);  
result= result + ']'

res.contentType('application/json');
myJSONstring = JSON.stringify(resultado);
res.send(myJSONstring);

GETを使用して目標ハッシュが入力されます。

app.get('/player/:id', function (req, res) {   
res.contentType('application/json');
res.send( {'goals': + goals[req.params.id] } );

});

11
Rafag

必要な情報を使用してJavaScriptデータ構造を構築し、最後にjson文字列に変換します。

私があなたがしていると思うことに基づいて、次のようなものを試してください:

var result = [];
for (var name in goals) {
  if (goals.hasOwnProperty(name)) {
    result.Push({name: name, goals: goals[name]});
  }
}

res.contentType('application/json');
res.send(JSON.stringify(result));

またはそれらの線に沿って何か。

38
Chris Tavares

JSONがありません。オブジェクト、配列、一部の文字列、一部の数字で構成されるJavaScriptデータ構造があります。

JSON.stringify(object)を使用して、JSONテキスト(の文字列)に変換します。

7
Quentin

これは私を助けました、

res.format({
        json:function(){
                            var responseData    = {};
                            responseData['status'] = 200;
                            responseData['outputPath']  = outputDirectoryPath;
                            responseData['sourcePath']  = url;
                            responseData['message'] = 'Scraping of requested resource initiated.';
                            responseData['logfile'] = logFileName;
                            res.json(JSON.stringify(responseData));
                        }
    });
3
Praneesh