Delphi XE DBX 序列化Json的bug
2012-02-23 16:40
706 查看
delphi XE Update1 15.0.3953.35171
序列化一个阵列,如下:
得到的结果为:{"Name":"A"B\'C中国"}
很明显结果是错的,双引号没有转义。查找代码,发现是这个地方的错误:
居然QuotedStr函数都没有用,更别谈斜杠的转义。
在Delphi XE2 update 3 16.0.4358.45540 版本,发现代码修改了:
这次把引号转义了,但是还有问题:如果里面本身已经有斜杠了,难道不用转义??哎,头继续大。
序列化一个阵列,如下:
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;
得到的结果为:{"Name":"A"B\'C中国"}
很明显结果是错的,双引号没有转义。查找代码,发现是这个地方的错误:
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;
这次把引号转义了,但是还有问题:如果里面本身已经有斜杠了,难道不用转义??哎,头继续大。
相关文章推荐
- 从DELPHI7至XE一直都有的BUG,关于DBX中使用的IsMultiTableQuery函数
- YxdJSON - Delphi 高性能 JSON 库(支持RTTI和序列化操作)
- YxdJSON - Delphi 高性能 JSON 库(支持RTTI和序列化操作)
- DELPHI XE2 采用 JSON 的方式来序列化对象
- DELPHI XE2 采用 JSON 的方式来序列化对象
- DELPHI XE2 采用 JSON 的方式来序列化对象
- Delphi Xe DataSnap Rest + Flex 开发 基本探索2(取得Json 数组)
- FastJSON序列化特殊字符BUG
- 关于fastjson序列化不可见特殊字符存在的bug
- 关于数据序列化(4),FastJson的两个bug
- delphi xe 之路(26)xe7开发的安卓程序,体积宏大
- MessagePack、Avro、Thrift、Protocol Buffers、JSON序列化协议
- jQuery序列化表单为JSON对象
- JSON2的JSON.stringify在IE8上的BUG
- Delphi2010,DelphiXE 安装控件找不到DesignIntf 解决办法
- .NET中JSON的序列化和反序列化
- delphi xe 之路(29)安装xe7up1
- Javascript中的Json序列化和反序列化
- UE4 序列化,反序列化,读写 Json
- fastJson序列化和反序列化 中空字符串的处理