Node.js从那时开始重新创建一个JSON文件

时间:2014-01-18 23:44:19

标签: javascript jquery json node.js

我对NODE.JS相当新,并希望将事情提升到新的水平。

我有一个NODE.JS脚本,它从一个feed中读取数据,然后呈现为一个巨大的JSON文件。然后我有网页和移动应用程序使用此文件使用JQuery函数呈现内容。

但是我想提高效率,我希望节点服务器使用我编写的脚本从JSON文件中提取内容并将其分解为更小的JSON文件。这将阻止移动应用和网页进行任何渲染。

我已经让服务器运行(express),我希望服务器侦听调用,然后从JSON文件中提取数据并将其重新呈现为一个较小的文件,然后使用res请求传递。 JSON

我有监听器,脚本,我只是缺少将在JSON文件中循环数据并输出另一个可以由res.json呈现的动态JSON文件

(饲料的第一部分)饲料

的样本
{
  "RTPPDataMsgV1": {
    "owner": "Open Data",
    "timestamp": "1390097100000",
    "classification": "public",
    "Sender": {
      "application": "RTPP3",
      "organisation": "String"
    },
    "Publication": {
      "TopicID": "RTPP3/InternalPP"
    },
    "RTPPData": {
      "snapshotTStamp": "1390097100000",
      "SystemMsg": null,
      "RAGThresholds": [
        {
          "type": "TOC",
          "medium": "89",
          "good": "92"
        },
        {
          "type": "PPT",
          "medium": "85",
          "good": "91"
        }
      ],
      "PPT": {
        "rag": "W",
        "ragDisplayFlag": "Y",
        "text": "-1"
      },

此信息每5分钟下载一次并始终更改。我希望服务器提取一小部分,并将其作为另一个小得多的JSON文件提供。例如,如果我只想要RagTHRESHOLDS部分,或者地狱,甚至只是时间戳。

所有这些都可以在内存中进行,需要将操作系统写为文件,我只需要服务器接受请求(在本例中为RAG阈值),读取信息,并通过res.json提供('生成较小的JSON文件')即

    {
      "type": "TOC",
      "medium": "89",
      "good": "92"
    },
    {
      "type": "PPT",
      "medium": "85",
      "good": "91"
    }

当提取当前应用程序的所有信息时,我的脚本会多次遍历大量数据,而这在某些旧款手机上存在问题。如果我能够提供一点点大小的块并从手机中省去费用,它将大大加快速度

1 个答案:

答案 0 :(得分:0)

好的,所以我怀疑我现在可以通过从我的应用程序转换现有的渲染代码来解决这个问题。

在示例中,我使用以下内容提取时间戳并呈现为

http://servername/ppm/timestamp.

我只需创建一个包含所有JSON数据的字符串,然后将其发送到屏幕即可。我通过JSON检查器运行输出,并且它全部有效。

var express = require('express'),
    http = require('http');

var ppm = require('./data/ppm.json'); //this gets the entire JSON file

var timestamp = '{"timestamp" : "' + ppm.RTPPMDataMsgV1.timestamp + '"}';

var app = express()
    .use(express.bodyParser())
    .use(express.static('public'));

app.get('/ppm/timestamp', function (req, res) {
    res.send(timestamp);
});

app.get('/*', function (req, res) {
    res.json(404, {status: 'not found'});
});

http.createServer(app).listen(3000, function () {
    console.log("Server ready at http://localhost:3000");
});

这只是最简单的例子。更复杂的输出将被过滤和大量的列表,但我已经构建了这些循环,只需要调整它们。但是现在所有这些数据提取都是由服务器完成的,不再需要通过电话/网站完成,现在只需要提取输出