繁体   English   中英

从中读取Node.js,然后重新创建一个JSON文件

[英]Node.js Read from then recreate a JSON file

我对NODE.JS相当陌生,并且希望将其提升到一个新的水平。

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

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

我已经在运行服务器(快速),并且希望服务器侦听呼叫,然后从JSON文件中提取数据并将其重新呈现为较小的文件,然后使用res.json根据要求进行传递

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

Feed(第一部分)的样本

{
  "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部分,或者只需要时间戳,该死的话。

所有这些都可以在内存中发生,不需要将OS写入文件中,我只需要服务器接收请求(在本例中为RAG阈值),读取信息,并通过res.json('较小的JSON文件”),即

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

在提取当前应用程序上的所有信息时,我的脚本会多次遍历海量数据,这在某些较旧的手机上是个问题。 如果我能够提供一些小块的东西,并把精力从电话上拿走,它将大大加快速度

好的,到达那里,所以我怀疑我现在可以通过转换应用程序中的现有渲染代码来完成此工作。

在有关的示例中,我使用以下代码提取时间戳并渲染为

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");
});

这只是最简单的示例。 更复杂的输出将被过滤并包含大量列表,但是我已经构造了这些循环,只需要对其进行调整即可。 但是,现在所有这些数据提取均由服务器完成,而不再需要由电话/网站完成,而电话/网站现在只需要渲染输出即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM