uses
...
XSuperObject;
procedure TForm1.Button1Click(Sender: TObject);
var
Json: ISuperObject;
begin
Memo1.Lines.Add('{"Evênements":"Noël"}');
Json := SO('{"Evênements":"Noël"}');
Memo1.Lines.Add(Json.AsJSON(True));
end;
此代码在Memo1中生成以下输出:
{"Evênements":"Noël"}
{
"Ev\u00eanements":"No\u00ebl"
}
为什么我在输出中输入\ u00e和\ u00eb,我该怎么做才能获得正确的重音字符?
答案 0 :(得分:0)
根据我对代码的阅读,图书馆无法提供您所寻求的内容。使用XSuperJSON.pas中的StrToUTF16
生成字符串,并对该函数进行编码,以将所有非ASCII字符转换为您问题中观察到的反斜杠转义格式。
该功能在技术上产生UTF-16,但仅因为ASCII(每个字符扩展到16位)是UTF-16的子集。我认为您应该file an issue with the project请求更典型的JSON序列化。
您可以完全省略ChrToUTF16
函数,几乎所有输入都可以。
就JSON而言,你得到的输出很好。它是完全有效的JSON,并且将回读字符串以产生与您开始时相同的值。如果您不希望人类手动阅读或编辑此JSON,那么您不必担心它。