PowerJSON - 由 JSON 改进的数据交换格式。

2019-10-15 14:35:13 +08:00
 18510047382

PowerJSON

Powerjson 是由 JSON 改进而成的数据交换格式,它将 JSON 支持了部分 JavaScript 语法,使其更加高效可用,并且解决了许多 JSON 历史遗留下来的问题。

它支持 单引号字符串, 多行字符串, 注释, 运算符, 导入文件, 导入其它 PJSON 文件 等。

Simple Demo

{
    // 字符串
    helloText: 'hello world',
    MultiLineText: `
        Welcome
        to
        PowerJSON!
    `,

    // 文件和导入
    myFile: new File('./file.txt'),
    importPJSONFile: new PJSON('./index2.pjson'),
    getFile: new GET('http://cn.powerjson.org'),

    // 运算符
    tenDaySeconds: 60 * 60 * 24 * 10

    // 这里是注释!
    /* 注释 2 */
}

生态系统

聊天室

为什么不加入我们的在线 PowerJSON CN Gitter 聊天室

仓库

PowerJSON 在 Github / Gitee / NPM 上托管仓库。

兼容性

PowerJSON 支持所有兼容 ES6浏览器 / js 运行时

浏览器:

Node.js:

文档

访问 powerjson.org 查看我们的在线实例和 教程

变更日志

每次发行版的细节和变更记录请访问 Github 上的 发行日志

协议

MIT

Copyright (c) 2019-present, Yingxuan (Bill) Dong

8729 次点击
所在节点    JavaScript
101 条回复
imdong
2019-10-15 15:31:52 +08:00
等等,大家的 JSON 都不是机器生成的么?
为啥我都是 obj to json_str // json_str to obj
18510047382
2019-10-15 15:32:17 +08:00
@markgor PJSON 解析器是基于 JavaScript 的,该如何修复 js 的计算精度呢?
18510047382
2019-10-15 15:32:58 +08:00
@imdong Node.js 还是 jsonstr to obj 多,browser 基本用不到啊
imdong
2019-10-15 15:34:38 +08:00
@18510047382 那为啥需要注释?
难道 JSON 需要自己手动写?
注释不应该用在生成 obj 的代码里面吗?
markgor
2019-10-15 15:35:26 +08:00
@18510047382
引用自百度出來的:
们要把需要计算的数字乘以 10 的 n 次幂,换算成计算机能够精确识别的整数,然后再除以 10 的 n 次幂,大部分编程语言都是这样处理精度差异的,我们就借用过来处理一下 JS 中的浮点数精度误差。
18510047382
2019-10-15 15:35:54 +08:00
@markgor json 的 parse 加不了 comment、operator、file data 等等,所以这就是 pjson 的特殊之处。
另外 pjson 的用处主要就是在 node.js 方面的,browser 如果你需要解析 jsonstr 可以使用 pjson。
18510047382
2019-10-15 15:37:10 +08:00
@imdong 我不知道你究竟见过 .json 文件没有,当 json 作为配置文件来使用的时候,你怎么通过 javascript 生成呢?
18510047382
2019-10-15 15:38:00 +08:00
@markgor 你说的精度处理也不错,之后考虑加入一下
markgor
2019-10-15 15:39:45 +08:00
@imdong Node.js 的配置文件是手寫的。

@18510047382
說真的,我們大家看完一大堆東西,
都不知道究竟用這個替換成 JSON 後能減輕或幫助到我們什麼東西,
這個點我覺得你應該說說比較好。

另外我不知道別人為什麼用 JSON,
我知道的就是我自己為什麼用 JSON。

就如上面所說,
因為 PHP 直接用 JSON_ENCODE(array|object)它就返回了 JSON
JS 只要是 ajax 設置了 JSON 類型就自動解析出 JS 對象。
換成.NET,JAVA 也是如此,只是它們需要加載第三方包。

然後傳輸中的對象就像你所說的,它們屬於 string 類型。那請問 PJSON 傳輸時候是否也是 STRING 類型呢?
momocraft
2019-10-15 15:41:52 +08:00
作为“交换格式”可能不容易普及,作为预处理器可能有用
JounQin
2019-10-15 15:42:00 +08:00
这轮子不香,下一个。
czjxy881
2019-10-15 15:42:51 +08:00
数据和代码耦合,很容易出现安全漏洞
love
2019-10-15 15:45:31 +08:00
导入文件啥的真没有必要,而且这种其它语言也不好支持

你可以参考 Node 社区常用的做法,比如需要导入文件 /计算之类的场合可以写成.js 模块,并导出一个最终 JSON,不比你这种做法妥当且灵活得多啊
love
2019-10-15 15:46:08 +08:00
去掉了导入的话和常用的 json5 之类的就没区别了,所以这个轮子真没必要
Jirajine
2019-10-15 15:48:53 +08:00
起码楼上说的有一个问题需要解决:各种常用语言的支持库。
zhybb2010
2019-10-15 15:53:00 +08:00
json 本身不是为了压缩或者序列化对象使用的么。。这么搞把它反而复杂化了。。况且除了感觉对于前端有用,后端就太鸡肋了,也不知道有没有 XSS 的风险
ipwx
2019-10-15 15:53:09 +08:00
配置文件,Node 系直接用 .js ,其他系用 YAML。

数据交换( API ),根本不需要这么复杂的功能。

结论:毫无意义。
cheneydog
2019-10-15 15:56:07 +08:00
new 可以去掉吧,感觉多余。
二进制数据支持么?
zhuangzhuang1988
2019-10-15 16:00:25 +08:00
试试 jsonnet 呗
http://www.lihaoyi.com/post/BuildyourownProgrammingLanguagewithScala.html 这里还有个简单的 scala 怎么实现教程
pkoukk
2019-10-15 16:06:26 +08:00
额..一时语塞不知道怎么说
请问您的 powerJson 目前支持哪些语言呢?如果只支持 js 的话,我为什么不用.js 呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/609525

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX