我正在使用Delphi XE DataSnap REST服务器并尝试返回
JSON序列化对象.我的方法返回到客户端的结果如下所示:
{"type":"ServerMethodsUnit1.TJSONIssue","id":1,"fields":{ "FIssueNo":90210,"FTitle":"Beverly Hills...that''s where I want to be","FKind":"Wishlist" } }
格式良好的JSON.
问题是,当客户端收到消息时,会添加一些东西,它看起来像这样:
{"result": ["{\"type\":\"ServerMethodsUnit1.TJSONIssue\",\"id\":1,\"fields\":{ \"FIssueNo\":90210,\"FTitle\":\"Beverly Hills...that's where I want to be\",\"FKind\":\"Wishlist\"} } " ] }
我得到了一堆反斜杠字符和前面的“结果”标签.
我想知道是否有人知道为什么我会得到这些额外的东西以及如何摆脱它.
解决方法
您发布的JSON会显示返回字符串而不是JSONObject的远程方法的结果.
返回JSONObject的正确方法应该是以下(未编译/测试):
返回JSONObject的正确方法应该是以下(未编译/测试):
function TMyRemote.GetSomething: TJSONValue; begin Result := TJSONObject.Create; Result.Add("Name","Daniele Teti"); //used the overloaded version of add (string,string) end;
现在json应该是正确的.结果字符串中的RESULT元素是按设计的.您可以读取结果数组的第一个元素并获取原始JSONObject.