JSON转Markdown:我把阅读数据从MongoDB中导出转换为.md了

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: JSON转Markdown:我把阅读数据从MongoDB中导出转换为.md了

背景


前几年(2015~2018)都是手动直接将笔记(不含图书详情:封面、ISBN、出版信息等)发布,看到大家最近都在做自我复盘,今天突然有个想法:把阅读笔记做成 Markdown 格式的,这时就需要进行简单的数据处理,即: JSON 数据转换为 Markdown


打开浏览器,在Github直接发现大神们已经造好的轮子:json2md。文档一看就明白了,而且最关键的是还可以自行扩展,厉害了!!

image.png


输入数据源:json文件


image.png

我平时的读书笔记专门记录在一个小Web网站上,每读完一本书,相关的图书信息、笔记都会录入到 MongoDB(数据来源:豆瓣图书爬虫😃),当然,图书的封面目前还是豆瓣的外链。所以先从 MongoDB 中导出数据,导出的原始数据长这样:

image.png


转换


把大象放进冰箱需要几步?


这个转换例子很简单,但是还是分几个步骤,我们看下过程:


  1. 读入input.json,根据需要,选择属性,转为json2md可以接收的格式,生成中间临时文件:temp.json;


  1. 读入临时的temp.json文件,通过json2md转换为markdown文本,并输出为output.md。


  • book. js
const fs = require('fs');
const jsonFile = './file/input.json';
const jsonObj = JSON.parse(fs.readFileSync(jsonFile));
const util = require("./utils/util");
// console.log(jsonObj.length);
// 选取属性进行组装
let temp = [];
for (let book of jsonObj) {
    temp.push({
        "seperate": ''
    });
    let image = {
        img: {
            "alt": book.image,
            "source": book.image
        }
    };
    let title = {
        "h3": (book.title + ((book.subtitle.length != 0) ? (":" + book.subtitle) : book.subtitle))
    };
    let note = {
        "ul": book.note
    };
    temp.push(title);
    if (book.image) {
        temp.push(image);
    }
    temp.push({
        "p": "作者:" + book.author.map(x => {
            return `${x.name}[${x.nationality}]` ;
        }).toString()
    });
    if (book.isbn13) {
        temp.push({
            "p": "ISBN:" + book.isbn13
        });
    }
    if (book.publisher) {
        temp.push({
            "p": "出版社:" + book.publisher
        });
    }
    if (book.pubdate) {
        temp.push({
            "p": "出版日期:" + util.formatDate(new Date(book.pubdate))
        });
    }
    if (book.tags.length > 0) {
        temp.push({
            "p": "图书标签:"
        });
        temp.push({
            "backquote": book.tags
        });
    }
    if (book.douban) {
        temp.push({
            "p": "豆瓣地址:"
        });
        temp.push({
            "link": {
                "title": book.douban,
                "source": book.douban
            }
        });
    }
    temp.push({
        "p": "阅读日期:" + util.formatDate(new Date(book.read))
    });
    if (book.note.length > 0) {
        temp.push({
            "p": "读书笔记"
        });
        temp.push(note);
    }
}
// console.log(temp);
// 生成中间文件
util.writeToFile('./file/temp.json', JSON.stringify(temp));
  • note. js
const fs = require('fs');
const jsonFile = './file/temp.json';
const jsonObj = JSON.parse(fs.readFileSync(jsonFile));
const json2md = require("json2md");
const util = require("./utils/util");
// 自定义转换:反引号
json2md.converters.backquote = function(input, json2md) {
    // return " `" + input + "` ";
    if (input instanceof Array) {
        return input.map(x => `\` ${x}\``);
    } else {
        return `\` ${input}\``;
    }
}
// 自定义转换:超链接
json2md.converters.link = function(input, json2md) {
    return `[${input.title}](${input.source})` ;
}
// 自定义转换:分割线
json2md.converters.seperate = function(input, json2md) {
    return `---` ;
}
// 执行转换
let result = json2md(jsonObj);
// console.log(result);
// 输出结果
util.writeToFile('./file/output.md', result);

这里需要注意的是,在 note.js 中有三个自定义的转换器: backquote , link , seperate ,分别表示:反引号,超链接,分割线,依赖包里本身未实现,但是支持自定义,这便是 json2md 的强大之处。

image.png


输出文件:md文件


image.png


发布博客


这样,以后拿来 JSON 数据,便可快速转换为 Markdown 文件,简单、直接、有效;最后,可直接将生成的 .md 文件在博客发表:

image.png


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
1月前
|
存储 NoSQL MongoDB
数据的存储--MongoDB文档存储(二)
数据的存储--MongoDB文档存储(二)
|
26天前
|
程序员
【Markdown速成】半小时入门Markdown教程(后缀.md文件详解)
作为程序员我们经常会看到README.md这种说明文件,以.md为后缀的文件就是我们所说的Markdown的文件。
|
1月前
|
NoSQL MongoDB 数据库
使用NimoShake将数据从AWS DynamoDB迁移至阿里云MongoDB
使用NimoShake将数据从AWS DynamoDB迁移至阿里云MongoDB
|
1月前
|
存储 NoSQL 关系型数据库
数据的存储--MongoDB文档存储(一)
数据的存储--MongoDB文档存储(一)
|
2月前
|
JSON NoSQL MongoDB
MongoDB批量导出导入操作的示例
使用 `mongoexport`和 `mongoimport`工具可以方便地对MongoDB数据库进行批量数据的导出和导入操作。它们支持多种格式和灵活的选项,使得数据迁移、备份和同步变得简单快捷。在实际应用中,根据具体的需求和数据特性选择合适的命令和选项是非常重要的,这将确保数据处理的效率和准确性。
77 1
|
1月前
|
机器学习/深度学习 JSON JavaScript
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
31 0
|
3月前
|
NoSQL 安全 MongoDB
【MongoDB深度揭秘】你的更新操作真的安全了吗?MongoDB fsync机制大起底,数据持久化不再是谜!
【8月更文挑战第24天】MongoDB是一款备受欢迎的NoSQL数据库,以其灵活的文档模型和强大的查询能力著称。处理关键业务数据时,数据持久化至关重要。本文深入探讨MongoDB的写入机制,特别是更新操作时的fsync行为。MongoDB先将数据更新至内存以提升性能,而非直接写入磁盘。fsync的作用是确保数据从内存同步到磁盘,但MongoDB并非每次更新后都立即执行fsync。通过设置不同的写入关注级别(如w:0、w:1和w:majority),可以平衡数据持久性和性能。
50 1
|
3月前
|
Web App开发 Linux Windows
解决Markdown文件上传至CSDN无法显示本地图片问题-白嫖版,分享给别人的md文件图片不显示的解决方案
解决Markdown文件上传至CSDN无法显示本地图片问题-白嫖版,分享给别人的md文件图片不显示的解决方案
|
3月前
|
监控 NoSQL MongoDB
mongodb查询100万数据如何查询快速
综上,提高MongoDB百万级数据的查询性能需要综合多项技术,并在实际应用中不断调优和实践。理解数据的特征,合理设计索引,优化查询语句,在数据访问、管理上遵循最佳的实践,这样才能有效地管理和查询大规模的数据集合。
218 1
|
3月前
|
NoSQL MongoDB 数据库
DTS 的惊天挑战:迁移海量 MongoDB 数据时,捍卫数据准确完整的生死之战!
【8月更文挑战第7天】在数字化时代,大数据量的MongoDB迁移至关重要。DTS(数据传输服务)通过全面的数据评估、可靠的传输机制(如事务保证一致性)、异常处理(如回滚或重试),以及迁移后的数据校验来确保数据准确无损。DTS还处理数据转换与映射,即使面对不同数据库结构也能保持数据完整性,为企业提供可靠的数据迁移解决方案。
66 2
下一篇
无影云桌面