我在互联网上阅读了一些 JSON 作品。作为一个菜鸟,希望我在追踪示例方面不如你们中的一些人好,因为我需要知识才能知道要搜索什么来获取知识。第 22 条。;-)
我正在使用超级对象,似乎是最好的方法。
我的问题是,我需要将 JSON 分成键/值对,到目前为止,如果我知道键是什么,我只能获得值。将针对所有可能的命令检查密钥(在我的应用程序中,密钥是 [command]),当命令匹配时,值部分是逗号分隔的参数列表,作为将由任一方启动的命令的参数. 然后服务器/客户端调用命令(过程/函数)并将 [commaText] 作为其参数传递。(可能有 JSON 政治上正确的方式来代替 [commaText],是的,您当然可以对此发表评论,但到目前为止,[commaText] 对我来说是一种简单易行的方式。
更短:我需要从 JSON 对中提取 [Key value] 和 [Value value]。
这是我到目前为止的工作:
function TWebSocketServer.GetValue(const AData: String;
Key: String): String;
var
JSON: ISuperObject;
rowItem: ISuperObject;
ADataStringStream: TStringStream;
begin
ADataStringStream := TStringStream.Create(AData);
JSON := TSuperObject.ParseStream(ADataStringStream, False);
rowItem := JSON[Key];
if Assigned(rowItem) then
Result := rowItem.AsString
else Result := '';
end;
如果我已经知道这对的键是什么,这会让我得到这对的价值。
重述:需要从 JSON 数据中提取两个键/值作为单独的字符串(通常/基本上永远,我拥有多个密钥对,它的一个命令/一个传输)
更多背景:我有一个 SQLDatabase/App-Server/Many Clients 实现。(App-Server I/O <-> SQL,计算,然后输出到客户端,客户端接收来自app-server的输入/函数调用,更新它的值,然后用户可以调用App-server上的函数,通过使用客户端调用该函数-使用websockets进行通信。应用程序服务器和客户端都可以调用api中的函数和过程,但这将是客户端服务器或服务器客户端一次一个命令。
而且我想知道创建一个特殊情况的 JSON 解析器是否更容易,因为我的数据总是只有一对,而不是一个大的 JSON 对象......
请,任何建议将不胜感激
PS。Delphi 10.1 柏林,Windows10 x64