1. 程式人生 > >WPF序列化,傳遞到python反序列化,報異常

WPF序列化,傳遞到python反序列化,報異常

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字串的,看來不能隨便用啊