如题。
如题。
|
s0fSep 19, 2016
1
字符串转义啊 '{"a":"\"123"}'
|
|
skydiverSep 19, 2016
3
解码库会自动帮你做转义和反转义,不需要自己处理
|
|
5
语言: python
|
|
7
php 果然是世界上最好的语言,自带的 json_decode 和 json_encode 函数会自动处理这些问题,完全不用担心
|
|
bazingaterrySep 19, 2016
12
我帮题主重新描述一下问题:一个忘记转义的 JSON 字符串怎么修复?
|
|
lgh06Sep 19, 2016
14
JS 路过 外面用单引号
var tmp = JSON.stringify('{"title":"this is title "hello" ."}'); var res = JSON.parse(tmp); JSON.stringify(res) |
|
lgh06Sep 19, 2016
16
import json
json.dumps('{"title":"this is title "hello" ."}') |
|
lgh06Sep 19, 2016
18
好吧 好像并不行……
|
|
gdtvSep 19, 2016
19
{"title":"this is title "hello" ."} 这个不是 json 字符串,所以楼主的问题应该改成“任意一个字符串怎么格式化成标准的 json 格式?”
|
|
klgdSep 19, 2016
20
不合法这个问题应该从根源解决,让数据产生者发送合法的 json 数据,我觉得这是解决问题的正确途径
|
|
ZzzzzzzzzSep 19, 2016
21
pyparsing 有个 json 的例子, 拿来改一下可以处理.
不过你最好能让给你吐 json 的给吐合法 json, 不然碰到{"x": "y","z":"x"}这种怎么定性是 x=y, z=x 还是 x=y","z":"x |
|
dofySep 19, 2016 via iPhone
22
你这不合法的数据哪来的?手动写的吗?
|
|
lxySep 19, 2016
24
如果要兼容你这种格式,那么一个字符串就可能有多种“合法”解释。
比如 {"title":"this is title ", "h":"ello."} 这一串。 解释 1 : { "title": "this is title ", "h": "ello." } 解释 2 : { "title": "this is title \", \"h\":\"ello." } |
|
25
garbage in garbage out
把不合法的输入强行解释成合法是不对的。 |
|
czheoSep 19, 2016
26
@wizardforcel +1
|
|
YuJianrongSep 19, 2016
28
为什么要支持不合法的输入?难道不是应该让输入方改到合法吗!
|
|
xieranmayaSep 19, 2016
29
人家库是给你把一个内置的对象转成 JSON 的时候会自动转义,你直接给个不合法的 json 字符串肯定没有库能帮你解析了。。。想什么呢
|
|
laoyurSep 19, 2016
30
你直接跟领导反映说:这个锅我不背,传过来的 json 就是不合法的,怎么指望我按照正常的来处理?
这就好比我是装备空调的,采购过来的压缩机本来就是坏的,居然还要指望我装出一台合格的空调来,有没有这个道理? |
|
kingddc314Sep 19, 2016
31
只要是个 JSON 序列化库都会转义,难道作者是手动拼 JSON 格式?
|
|
raysonxSep 19, 2016
32
坐等楼主的“兼容”解析器被注入。
|
|
learnshareSep 19, 2016
33
如果字符串中存在双引号, JSON 的生成代码需要生成:
"key": "value \"VALUE\" value"; // 这个格式 JSON 的解析代码需要解释成: key = 'value "VALUE" value'; 正常来说,使用到的库和框架都会做这种处理,自己写代码也要遵循这个规则,才能兼容。 |
|
sampengSep 19, 2016
34
这锅你都想办法去背不是作死吗。。。
|
|
rrfengSep 19, 2016
35
最近也在被类似的一个问题折磨……
nginx access log 直接输出的 json ,然后某些特定情况下打印了 postdata ,这里面可能有双引号,但是文件里记录的是 ’\x22 ‘,然后在 json parse 的时候就崩了…… 因为 \x 是不合法的 escape …… 做法是将 \x22 替换成 \\x22 …… 实际上因为还有一层转义(上述都是在 logstash 里),所以是 \\x22 -> \\\x22 ,无比蛋疼 |