有没有轻量级的 py 库能够解析在 JS 里的 JSON?

2016-05-28 23:59:29 +08:00
 est
比如 var foobar = [[{}, {}, {}], [{}, {}, {}], ]

这种。。平衡匹配括号就出来了。其中 var foobar 能够通过正则找到文档中的 offset 并且精确定位。

如何把后面的 JSON 提取出来?

不想引入一大坨 nodejs 依赖。

parser 学得烂,菜鸟表示不会写啊 -_-
4035 次点击
所在节点    Python
23 条回复
jarlyyn
2016-05-29 00:02:18 +08:00
爬虫?
VeryCB
2016-05-29 00:07:05 +08:00
guyskk
2016-05-29 00:09:56 +08:00
先要把 `[[{}, {}, {}], [{}, {}, {}], ] `取出来,然后用 js2py 这个库, https://github.com/PiotrDabkowski/Js2Py
```
>>> import js2py
>>> js2py.eval_js('[[{}, {}, {}], [{}, {}, {}], ]')
[[{}, {}, {}], [{}, {}, {}]]
>>>
```
est
2016-05-29 00:25:31 +08:00
@guyskk 要的就是一个工具能自动匹配突破换行、注释和空白符号可以实现 “把 `[[{}, {}, {}], [{}, {}, {}], ] `取出来” 的工具
@VeryCB 看起来要的就是这货了! thanks !
est
2016-05-29 00:26:14 +08:00
@VeryCB 话说我研究过 pypy 搞那个 js 转 py 的工具。太复杂了。一个 phd 写了毕业论文就弃坑了。我日。
Lonely
2016-05-29 01:56:10 +08:00
为啥我一看到 py 想到的却不是 python😨
linuxchild
2016-05-29 01:57:21 +08:00
@Lonely 朋友(๑°3°๑)
Valyrian
2016-05-29 02:17:11 +08:00
最快的难道不是 ujson..?
YUX
2016-05-29 05:08:39 +08:00
import json

a = """{"status":{"msg":"Success","code":0,"version":"1.0"},"result_type":1}"""

j = json.loads(a)

print j["status"] #{u'msg': u'Success', u'code': 0, u'version': u'1.0'}
YUX
2016-05-29 05:09:34 +08:00
另外安利一个直观查看 JSON 数据结构的工具 https://jsonformatter.curiousconcept.com/
ZavierXu
2016-05-29 09:42:03 +08:00
楼上是来搞笑的么。。。。
est
2016-05-29 09:53:36 +08:00
@YUX

大哥,在一堆杂乱的 js 源码里,如何提取你第 2 行代码 """ """ 之间那一坨东西?

人工复制粘贴?
magicdawn
2016-05-29 10:02:51 +08:00
magicdawn
2016-05-29 10:06:05 +08:00
Node 大法好啊~ 取出来直接 eval, 要怕出事用 vm 模块, sandbox 运行下
est
2016-05-29 10:26:38 +08:00
@magicdawn 嗯。你 eval 一个 `exit()` 然后进程直接退出了。 (手动 doge.gif
est
2016-05-29 10:29:33 +08:00
@magicdawn 看起来没处理注释 和字符串?

比如有的人会嵌套:

var foobar = {"key": "{ /* 注释里带一个 } 就问你叼不叼 */ \"key\": \"value}])\" }"}
est
2016-05-29 10:30:14 +08:00
例子有错 var foobar = {"key": /* 注释里带一个 } 就问你叼不叼 */ "{\"key\": \"value}])\" }"}
magicdawn
2016-05-29 10:38:18 +08:00
@est
这个确实没有处理~
btw 确实叼
magicdawn
2016-05-29 10:42:45 +08:00
@est

有想法~又可以造轮子了~好开森...
guyskk
2016-05-29 10:45:01 +08:00
@est
有网址吗,我研究研究

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

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

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

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

© 2021 V2EX