We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
今天完成了一个新库:https://github.com/weflex/typify-json ,创造这个库的原因起于 Fibula.js 的开发过程中,我使用了如下的代码:
const exec = require('child_process').execSync; exec(`mongo --eval "db.foo.insert(${JSON.stringify(input)})"`);
如果input的值包含有Date这样的值,那么JSON.stringify的时候就会默认地把Date转换成字符串再插入数据库中了,这个不是我们想要的结果。
input
Date
JSON.stringify
因此,typify-json 使用了与JSON类似的 API:
JSON
const typifyJSON = require('typify-json'); const exec = require('child_process').execSync; exec(`mongo --eval "db.foo.insert(${typifyJSON.stringify(input)})"`);
这样如果我们输入:
{ "date": new Date() }
那它等价于如下的"Shell语句":
> db.foo.insert({"date":new Date()})
在开发这个库的过程中,我尝试过很多方案:
JSON.stringify(input, replacer)
WeakMap
在尝试方法2时,还发现了JSON.stringify的replacer函数有一个比较奇怪的特性,比如以下代码:
replacer
JSON.stringify({ foo: { date: new Date() } }, function (key, val) { console.log(key, val); });
当key为"date"的时候,发现对应的val已经不是一个字符串类型了,所以只能在上一层,即key等于"foo"的时候,来判断。
key
val
The text was updated successfully, but these errors were encountered:
为什么写在issues里啊,我觉得可以用org-mode写,然后导出html,放在github上,你看我的:
http://geekplux.com/wiki/
我也是刚开始写
Sorry, something went wrong.
有几个原因吧:
git
org-mode 虽然好用,但是支持还是不够,我现在还是只是在团队内部的 wiki 用那个啦~
No branches or pull requests
typify-json
今天完成了一个新库:https://github.com/weflex/typify-json ,创造这个库的原因起于 Fibula.js 的开发过程中,我使用了如下的代码:
如果
input
的值包含有Date
这样的值,那么JSON.stringify
的时候就会默认地把Date
转换成字符串再插入数据库中了,这个不是我们想要的结果。因此,typify-json 使用了与
JSON
类似的 API:这样如果我们输入:
那它等价于如下的"Shell语句":
在开发这个库的过程中,我尝试过很多方案:
JSON.stringify(input, replacer)
的方式去重写,不过后来发现最后我所需要的并不是一个标准的 JSON,因此无法通过这种方法得出;Date
的值使用一个特殊的散列值存储在一个WeakMap
内,然后在最后使用正则换掉,不过这种方法不够直观简单,WeakMap
的API也不够稳定,于是作罢。在尝试方法2时,还发现了
JSON.stringify
的replacer
函数有一个比较奇怪的特性,比如以下代码:当
key
为"date"的时候,发现对应的val
已经不是一个字符串类型了,所以只能在上一层,即key
等于"foo"的时候,来判断。The text was updated successfully, but these errors were encountered: