WPF序列化,傳遞到python反序列化,報異常
阿新 • • 發佈:2018-12-03
WPF序列化,傳遞到python反序列化,報異常:
WPF json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes
說是要用雙引號來將key值括起來
嘗試:
1.在WPF除錯過程中得到json字串在wpf中的值,將這個值儲存到txt檔案中,python直接讀取這個txt檔案,進行反序列化,
成功反序列化。
2.看網上的解決方案,將python端得到的字串中的\'replace成\",並去掉u,依然不行(字串中沒發現有單引號,也沒有中文,屬於死馬當活馬醫)
3.懷疑是編碼的問題,在wpf端將json字串轉碼為utf-8的格式,依然不行
4.將python接收到的json字串儲存到txt檔案中,沒發現問題,讀取txt檔案序列化報的錯是缺少','
5.在wpf端的json字串換成自己隨便寫的字串常量。發現可以json序列化,說明是wpf端序列化後的字串的問題
6.重新審視wpf端的json字串發現字串內部有很多\r\n
原來是在用Newtonsoft.Json盡心json序列化時使用了引數Formatting.Indented
JsonConvert.SerializeObject(this, Formatting.Indented);
改為
return JsonConvert.SerializeObject(this);
生成的字串中就不會加入\r\n了
總結:在一開始除錯的時候沒有發現\r\n的原因是,json字串非常長,於是使用了HTML視覺化工具去檢視的變數值,
但是在視覺化工具中沒有顯示\r\n,html視覺化工具是用來顯示html字串的,看來不能隨便用啊