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; }