比较不同来源的Json

时间:2018-01-20 13:50:12

标签: json node.js

以下是一个用例:

监控1 PM*网站

URL1:foo.com; json响应是{main:{id:1,name:John},{id:2,name:Lenny}}

URL2:bar.com; json的回复是{main:{id:1,name:Michael}}

==========================

再次监控2PM网站

URL1:foo.com; json的回复是{main:{id:1,name:Kevin},{id:2,name:Tim}

URL2:bar.com; json的回复是{main:{id:1,name:Michael}}

=====================

我想在下午1点将URL1及其json与URL1及其下午2点的json进行比较。

问题 1)存储URL1及其Json以及url2及其json的最佳数据结构(或数据库)是什么? 2)有没有办法记录从下午1点到下午2点的差异?

*注意:这些时间框架已经完成。

2 个答案:

答案 0 :(得分:0)

您有2个主要选项,要么只有一个.json文件并对其进行读写,要么使用MongoDB

选项#1从.json文件读取/写入

这是快速且易于设置的,但对于较大的数据集或者如果需要频繁请求,则不是一个好的选择。

  1. 创建一个对象,并在其中添加一些东西

    let obj = {myMessage: 'Hello'};

  2. 使用stringify将其从对象转换为字符串

    var json = JSON.stringify(obj);

  3. 使用fs将文件写入磁盘

    const fs = require('fs');

    fs.writeFile('myjsonfile.json', json, 'utf8', callback);

  4. 然后再读回来

  5. fs.readFile(' myjsonfile.json',

     'utf8', function readFileCallback(err, data){
        if (err){
            console.log(err);
        } else {
        obj = JSON.parse(data); //now it an object
        obj.table.push({id: 2, square:3}); //add some data
        json = JSON.stringify(obj); //convert it back to json
        fs.writeFile('myjsonfile.json', json, 'utf8', callback); // write it back 
    }});
    

    选项#2 MongoDB

    这并不难设置,但不像第一种方法那么简单。它具有更高的可扩展性,并且还具有更快的访问速率以及基本查询功能。对大多数情况来说,它无疑是首选。

    检查this tutorial是否开始使用Mongo。

答案 1 :(得分:0)

  

1)存储URL1及其Json以及url2及其json的最佳数据结构(或数据库)是什么?

这实际上取决于您的确切用例,因为有几种不同的选择。您可以将它们存储为普通的JSON文件或使用支持JSON的数据库(例如MongoDB,CouchDB,MySQL,PostgreSQL,or something else)。

  

2)有没有办法记录从下午1点到下午2点的差异?

最好的方法可能是JSON Patch(但同样,这取决于您的确切用例)。 JSON Patch是IETF的Web标准。它定义了一种补丁格式,可以从两个JSON数据结构的差异中检索,也可以应用于JSON结构(因此,名称为“JSON Patch”)。有implementations of JSON Patch in different programming languages