【发布时间】:2021-10-29 16:23:27
【问题描述】:
我有一个任务,我需要为包含以下结构的 JSON 文件创建一个专门的编辑器:
{
"intents": [
{
"tag": <string_name>,
"patterns": [
<string>,
<string>,
<string>...
],
"responses": [
<string>,
<string>,
<string>...
],
<repeats arbitrarily]
}
]
}
表单有一个下拉菜单和两个TMemos。我们的想法是使用下拉菜单为每个tag 编辑patterns 和responses。完成后,我保存回 JSON 文件。
我正在苦苦挣扎的是如何最好地将这些数据存储在内存中,以便轻松地从一个标签切换到另一个标签。我在想一个TObjectDictionary,其中tag名称作为键,值作为patterns或responses,但后来我意识到我必须实例化xTObjectDictionarys的数量动态地,每个tag 一个。
是否可以使用带有 string 字段和两个 TStringList 对象的动态数组来代替?我正在使用 TJsonTextReader 遍历 JSON 文件中的项目,并且效果很好。我只需要一些关于存储数据的最佳结构的想法。
【问题讨论】:
-
JSON 结构看起来设计不正确。似乎意图应该是一个地图而不是一个数组。
-
您只需要一个 TObjectDictionary。使用字符串作为键,例如以两个动态数组作为值的记录: type TPatternsAndResponses = record Patterns: array of string;响应:字符串数组;结尾; var IntentsDict: TObjectDictionary
这假设意图数组的顺序并不重要。 (我认为不是。) -
@DavidHeffernan 我无法控制 JSON 的结构。
标签: arrays dictionary object delphi dynamic