Delphi XE DBX 序列化Json的bug

2021-06-16 08:34:14 字數 1021 閱讀 6040

delphi xe update1 15.0.3953.35171

序列化乙個陣列,如下:

procedure tform1.button2click(sender: tobject);

var vobject:tjsonobject;

vpair:tjsonpair;

begin

vobject:=tjsonobject.create();

vpair:=tjsonpair.create('name','a"b\''c中國');

vobject.addpair(vpair);

edit1.text:=vobject.tostring;

end;

得到的結果為:

很明顯結果是錯的,雙引號沒有轉義。查詢**,發現是這個地方的錯誤: 

dbxjson.pas

function tjsonstring.tostring: unicodestring;

begin

if fstrbuffer <> nil then

exit('"' + fstrbuffer.tostring + '"');

result := nullstring;

end;

居然quotedstr函式都沒有用,更別談斜槓的轉義。

在delphi xe2 update 3 16.0.4358.45540 版本,發現**修改了:

function tjsonstring.tostring: unicodestring;

begin

if fstrbuffer <> nil then

exit('"' + ansireplacestr(fstrbuffer.tostring, '"', '\"') + '"');

result := nullstring;

end;

這次把引號轉義了,但是還有問題:如果裡面本身已經有斜槓了,難道不用轉義??哎,頭繼續大。

序列化(序列化)

原書上翻譯為序列化,msdn翻譯為序列化 作用 當需要儲存,或者網路傳輸 remoting時,資料 物件或值 需要序列化 類似於打包傳輸檔案。system.serializableattribute 序列化是指儲存和獲取磁碟檔案 記憶體或其他地方中的物件。在序列化時,所有的例項資料都儲存到儲存介質上...

序列化(模型序列化 序列化巢狀)

from rest framework import serializers from meituan.models import merchant,class merchantserializer serializers.modelserializer class meta model merch...

序列化和解序列化

serialize 返回乙個字串,包含著可以儲存於 php 的任何值的位元組流表示。unserialize 可以用此字串來重建原始的變數值。用序列化來儲存物件可以儲存物件中的所有變數。物件中的函式不會被儲存,只有類的名稱。要能夠unserialize 乙個物件,需要定義該物件的類。也就是,如果序列化...