一般情况下呢,PyDict 长得确实是挺像 JSON 的。
比如这种:
1 | {'foo': 'bar'} |
把单引号全换成双引号就可以解析了,这样子:
1 | JSON.parse("{'foo': 'bar'};".replace(/\'/g, '"')) |
但是,要是遇到带 Unicode 的,比如:
1 | {'\\xe9\\x94\\x99\\xe8\\xaf\\xaf': '\\xe4\\xbd\\xa0\\xe4\\xbb\\xac\\xe5\\x86\\x8d\\xe8\\xaf\\xb4 Python Dict \\xe5\\xb0\\xb1\\xe6\\x98\\xaf JSON \\xe6\\x88\\x91\\xe5\\xb0\\xb1\\xe6\\x97\\xa5\\xe6\\xad\\xbb\\xe4\\xbd\\xa0\\xef\\xbc\\x81\\xe5\\x93\\xbc\\xef\\xbc\\x81'} |
就木有办法了,也许有人说。。。有!我把 \xb1 什么的自己处理掉!
好吧这是一种办法,但是我用了更蛋疼的方法,直接用 C艹 写了个库,把 PyDict 用 Python 转成 JSON 然后 JSON.parse 之。。。
由于学艺不精,写这个库的时候 Segment fault 数次,还曾有各种内存泄露。
嗯,不过总算是写完了。
Github 地址在这里: https://github.com/ym/node-pydict
要用的话直接 npm install pydict
就可以安装了。
1 | var pydict = require('pydict'); |
PS: 虽然我吐槽了很多次但是我还是要再吐槽一遍!!!研发的亲们!!!你们能不能不要再告诉我 PyDict 就是 JSON 了啊啊啊!!!
再 PS: 困死我了居然还睡不了因为今天是 Deadline … 哼哼哼下次再乱改需求就不干了!!!
由于在我的生产环境中又 Segfault 了 … 于是我用了一种 很黄很暴力 的方法
1 | var pydict = function(str) { |
嗯… 反正我也不用那堆中文…