QJSON中编码函数Encode的特别说明

QJson.Encode是用于将当前JSON对象的内容格式化为字符串的函数,AsString/toString/AsJson函数实际低层都调用了它,而在网络传输时,我们实际上并不需要换行等空白字符,此时,手动调用Encode时将第一个ADoFormat参数设置为False。另外,部分控件或软件可能要求中文等特殊字符必需编码,此时,调用Encode函数时将第二个ADoEscape参数设置为True即可(默认False)。
首先看下函数的帮助:

/// <summary>编码为字符串</summary>
/// <param name="ADoFormat">是否格式化字符串,以增加可读性</param>
/// <param name="ADoEscape">是否转义非字母和数字字符</param>
/// <param name="AIndent">ADoFormat参数为True时,缩进内容,默认为两个空格</param>
/// <returns>返回编码后的字符串</returns>
/// <remarks>AsJson等价于Encode(True,False,* *)</remarks>

下面的代码演示了不同的效果:

[Delphi]

var
   AJson:TQJson;
begin
AJson:=TQJson.Create;
AJson.Add(*Test*).AsString:=*您好*;
ShowMessage(AJson.Encode(True,False));
ShowMessage(AJson.Encode(True,True));
ShowMessage(AJson.Encode(False,False));
ShowMessage(AJson.Encode(False,True));
AJson.Free;
end;

[C++ Builder]

{
TQJson *AJson=new TQJson;
AJson->Add(L"Test")->AsString=L"您好";
ShowMessage(AJson->Encode(true,false));
ShowMessage(AJson->Encode(true,true));
ShowMessage(AJson->Encode(false,false));
ShowMessage(AJson->Encode(false,true));
delete AJson;
}

 

分享到: