2017-04-13 120 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