2017-04-13 79 views
2

我就在一个JSON格式有数据,但JSON解析器无法识别的数据,由于有额外的填充以下在解析JSON文件

1的对象的文件工作需要帮助反斜线

2 - 对象开始和结束括号在引号{"menu":"{ }"}

我用replace()功能,但它是清除所有,这是造成问题的blackslashes的。

的样本数据

{"menu": "{ 
\"URL\": \"http:\\/\\/www.example.com\\/concepts\\/test\\/data\\/\", 
\"value\": \"File\", 
    \"popup\":\"testfile\" 
    }"} 

预期输出

{"menu": { 
"url": "http:\/\/www.example.com\/concepts\/test\/data\/", 
"value": "File", 
"popup":"testfile" 
}} 

任何帮助,将不胜感激。

感谢

+0

我会尝试'.replace('“\','”')'为引号(花括号相同)。但它依赖于数据。鉴于文件的内部逻辑被破坏,很难创建一个通用的解决方案。 –

+0

顺便说一句,不需要跳过斜杠,所以你的第一个想法可以很好地工作。 –

+2

如果文件已知,只要尝试使用记事本++或具有正则表达式的编辑器执行替换,直到文件正确。如果该文件是由其他工具生成的,只需用订书机将该工具编码为该工具的头部,直至修复该错误。 –

回答

3

menu对象只是JSON作为一个字符串,可以很容易地提取。

import json 
inputjs = r"""{"menu": "{ 
\"URL\": \"http:\\/\\/www.example.com\\/concepts\\/test\\/data\\/\", 
\"value\": \"File\", 
    \"popup\":\"testfile\" 
    }"}""" 

result = json.loads(inputjs.replace('\n', '')) 
menu = result["menu"] 
result = json.loads(menu); 
json.dumps({'menu':result}) 
+0

真棒。感谢您的帮助。 – newSparkbabie