gpt4 book ai didi

c++ - 反对 Json 并返回

转载 作者:行者123 更新时间:2023-11-28 04:45:11 27 4
gpt4 key购买 nike

我正在尝试将对象转换为 Json 字符串。我看到一个 TJson::ObjectToJsonString() 似乎可以满足需求,但似乎不起作用。我在 Delphi 中有确切的代码,没有问题。因此,显然需要在 C++ 方面做更多的事情。

class TData : public TObject
{
private:
String FName;
public:
__property String Name = {read=FName, write=FName};
};
//----------------------------------------------------------------

实现...

  TData *data = new TData();

data->Name = "A Test Name";

mmMessage->Lines->Add(TJson::ObjectToJsonString(data));

我得到输出 {}

最佳答案

ObjectToJsonObject() 忽略属性,它只编码字段,而且它足够聪明,可以从字段名称中去除前导 F。这就是为什么您的 FName 字段在您的 Delphi 代码中被编码为 Name 的原因。参见 Convert an object instance into a JSON string and making use of custom attributes ,其中更详细地介绍了该主题(它面向 Delphi,但也适用于 C++Builder)。

由于您的 Name 属性按原样毫无用处,您不妨将 Name 设为公共(public)字段而不是属性:

class TData : public TObject
{
public:
String Name;
};

还要确保您的项目设置为为您的 TData 类生成 RTTI。尝试用 __declspec(delphirtti) 标记它,例如:

class __declspec(delphirtti) TData : public TObject
{
public:
String Name;
};

并确保您没有通过 #pragma explicit_rtti 明确禁用 RTTI .

关于c++ - 反对 Json 并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49388974/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com