- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我搜索了很多,但找不到可行的解决方案。很可能是因为我是 Delphi 的新手(并且来自 C#)。
我有一个带有以下类声明的单元:
TReplaceField = class
public
Key: string;
Value: string;
constructor Create; overload;
constructor Create(strKey, strValue: string); overload;
end;
类也可以记录,就像评论中建议的那样。
我想创建它的集合,可以是数组,TList<T>
,或在这种情况下最适合的任何方式,然后将其序列化为 JSON(以存储它),然后反序列化以循环遍历字段。
我找到了 REST.JSON
和 TJson.ObjectToJsonString()
,适用于 1 个对象。
但是如果我传递一个 array of TReplaceField
,它给了我一个编译错误:
E2010 Incompatible types: 'TObject' and 'Dynamic array'
当我使用 TList
在运行时,我得到一个不同的错误:
type tkPointer is not currently supported
在 C# 中,所有这些都非常简单,只需几行代码。我非常困惑如何在 Delphi 中执行此操作(除了通过字符串连接手动创建 JSON 之外)。
更新:有了 David 的提示,我已经开始进行序列化了。一个对象的反序列化也有效,但集合的反序列化无效。
我的类(class)现在看起来像这样:
TReplaceField = class
private
FKey : string;
FValue : string;
published
property Key : string read FKey write FKey;
property Value : string read FValue write FValue;
public
constructor Create; overload;
constructor Create(strKey, strValue: string); overload;
end;
序列化一个对象:mmoJson.Lines.Text := TJson.ObjectToJsonString(Field);
好的
反序列化一个对象:JsonToObject<TReplaceField>(mmoJson.Lines.Text);
好的
序列化集合:mmoJson.Lines.Text := TJson.ObjectToJsonString(FieldList);
好的
反序列化集合:JsonToObject<TReplaceField>(mmoJson.Lines.Text);
失败,消息:
EConversionError with message 'Internal: Cannot instantiate type System.Generics.Collections.TList<uReplaceField.TReplaceFieldRec>'
为 ReplaceField
使用记录而不是类给出相同的结果。
快到了。我缺少什么才能使其完全正常工作?
最佳答案
type
TReplaceCollect = TList<TReplaceField>;
添加这个课后声明。
关于json - 将集合序列化和反序列化为 JSON Delphi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42808092/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!