反对 Json 并返回
Object to Json and back
我正在尝试将对象转换为 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
属性 是相当无用的 as-is,你不妨将 Name
设为 public 字段而不是 属性:
class TData : public TObject
{
public:
String Name;
};
还要确保您的项目设置为为您的 TData
class 生成 RTTI。尝试用 __declspec(delphirtti)
标记它,例如:
class __declspec(delphirtti) TData : public TObject
{
public:
String Name;
};
并确保您没有通过 #pragma explicit_rtti
明确禁用 RTTI。
我正在尝试将对象转换为 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
属性 是相当无用的 as-is,你不妨将 Name
设为 public 字段而不是 属性:
class TData : public TObject
{
public:
String Name;
};
还要确保您的项目设置为为您的 TData
class 生成 RTTI。尝试用 __declspec(delphirtti)
标记它,例如:
class __declspec(delphirtti) TData : public TObject
{
public:
String Name;
};
并确保您没有通过 #pragma explicit_rtti
明确禁用 RTTI。