Node读取和写入json,格式化输出json

今天是在深信服实习的第5天,接到任务要做产品的外语版,Web端的实习生目前只有我一个,前端和PHP的都要我来做。。。

现在需要一个写一个脚本,处理两个json文件,把Bjson文件在A中没有的中文词条都要找出来写入另外一个json,实际需求要复杂得多,先写个初步demo:

var fs = require('fs'),
    path = require('path');
let ans = {};

//求一方的差集(不是严格意义上的差集,只是一边的)
function diff(a, b) {
    var keysA = Object.keys(a);
    // console.log(keysA);
    var keysB = Object.keys(b);
    // console.log(keysB)
    var ret = {}
    keysB.forEach(key => {
        if (keysA.indexOf(key) === -1) {
            ret[key] = b[key];
        }
    });
    return ret;
}

fs.readFile(path.join(__dirname, 'json/json1.json'), 'utf8',function (err,data1) {
    if (err) throw err;
    // console.log(data1);
    data1 = JSON.parse(data1)
    // console.log(typeof data1);

    fs.readFile(path.join(__dirname, 'json/json2.json'), 'utf8',function (err,data2) {
         if (err) throw err;
         // console.log(data2);
         data2 = JSON.parse(data2);
         ans = diff(data1, data2);

        // console.log(typeof ans);
        console.log(ans);
        let Str_ans = JSON.stringify(ans,null, 4);
        fs.writeFile('ret.json', Str_ans, 'utf8', (err) => {
            if (err) throw err;
            console.log('done');
        });
     });
});

注意readFile和readFileSync,writeFile和writeFileSync,后者是前者的同步版。
但是一开始写入的json格式巨丑:

后来查到stringify的API才知道格式化输出。

JSON.stringify(value[, replacer [, space]])

参数

  • value
    将要序列化成 一个JSON 字符串的值。
  • replacer 可选
    如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;如果该参数为null或者未提供,则对象所有的属性都会被序列化;关于该参数更详细的解释和示例,请参考使用原生的 JSON 对象一文。
  • space 可选
    指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数为字符串(字符串的前十个字母),该字符串将被作为空格;如果该参数没有提供(或者为null)将没有空格。

返回值 一个表示给定值的JSON字符串。

原文地址:https://www.cnblogs.com/zhangmingzhao/p/8522791.html

时间: 2024-10-05 20:34:53

Node读取和写入json,格式化输出json的相关文章

格式化输出Json对象

1.调用方式: alert(JsonUti.convertToString(jsonObj)); //jsonObj为json对象. 2.格式化输出Json对象方法定义: var JsonUti = { //定义换行符 n: "\n", //定义制表符 t: "\t", //转换String convertToString: function(obj) { return JsonUti.__writeObj(obj, 1); }, //写对象 __writeObj:

Log格式化输出JSON内容

以前常做的一件事就是把返回的json复制到格式化工具里看内容,Json格式化方法那么多直接格式化LOG不是很省事. 很早前写的简单LOG类(Log.java) import android.text.TextUtils; /** * 日志信息 * * @author Harlan Song * @createDate 2013-2-8 */ public class Log { /** * 日志开关 */ private static boolean isDebug = true; privat

Java - 格式化输出JSON字符串的两种方式

目录 1 使用阿里的fastjson 1.1 项目的pom.xml依赖 1.2 Java示例代码 2 使用谷歌的gson 2.1 项目的pom.xml依赖 2.2 Java示例代码 1 使用阿里的fastjson 1.1 项目的pom.xml依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58&l

【Python】格式化输出json

参考文档: Python JSON JSON 函数 使用 JSON 函数需要导入 json 库:import json. 函数 描述 json.dumps  将 Python 对象编码成 JSON 字符串 json.loads 将已编码的 JSON 字符串解码为 Python 对象 json.dumps json.dumps 用于将 Python 对象编码成 JSON 字符串. 实例 以下实例将数组编码为 JSON 格式数据: #!/usr/bin/python import json data

html格式化输出JSON( 测试接口)

将 json 数据以美观的缩进格式显示出来,借助最简单的 JSON.stringify 函数就可以了,因为此函数还有不常用的后面2个参数. 见MDN https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify 的描述. 示例代码如下: <html> <head> <meta charset="utf-8" /> <

JSON格式化以及JSON验证工具

最近项目中遇到JSON格式验证的问题,由于请求接口中可能存在新旧版本兼容问题,老版本的客户端,情况就不说了,糟透了,各种格式都有,看起来像JSON,但是--呵呵. 所以需要做兼容,就得把之前不规范的东西规范一下,并且验证其正确性:工具类如下: /**  * Project Name:v3a-b2c  * File Name:JsonValidator.java  * Package Name:com.v3a.util  * Date:2014年10月26日下午1:59:59  * Copyrig

nodejs写入json文件,格式化输出json的方法

假如我需要把data序列化成json字符串,然后写入data.json文件中,代码如下: 1 let str = JSON.stringify(data) 2 3 fs.writeFile('data.json',str,function(err){ 4 if (err) {res.status(500).send('Server is error...')} 5 }) 入json文件后,都会出现很恶心的一行式,看看 不能忍对不对!!! Vanilla JS的JSON.stringify()是可

json 格式化输出

很多时候我们需要将json字符串以 { "status": 1, "sum": 9 }这种方式显示,而从服务端取回来的时候往往是这样 {"status": 1, "sum": 9}什么?无所谓?如果数据很庞大的时候,比如这样{"status":1,"totalcount":2,"list":[{"id":"2305b1e2-4e31-4f

懒人福利:Xcode插件将JSON格式化输出为模型的属性-&gt;ESJsonFormat-Xcode

这是一个直接将json数据转换为模型数据的插件,只需要在控制台输入json数据,就可以在模型文件的.h文件中生成对应的模型数据 对于模型套模型的数据也做了处理,比较方便. 有需要的人可以尝试一下,但不知道在xcode8中是否支持 项目主页