我正在尝试将对象转换为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));
我得到输出{}
答案 0 :(得分:1)
ObjectToJsonObject()
忽略属性,它只编组字段,并且足够聪明地从字段名称中删除前导F
。这就是您的FName
字段在您的Delphi代码中被封送为Name
的原因。请参阅Convert an object instance into a JSON string and making use of custom attributes,其中更详细地介绍了该主题(它面向Delphi,但它也适用于C ++ Builder)。
由于您的Name
属性相当无用,您也可以将Name
设为公共字段而不是属性:
class TData : public TObject
{
public:
String Name;
};
还要确保您的项目已设置为您的TData
课程生成RTTI。尝试使用__declspec(delphirtti)
进行标记,例如:
class __declspec(delphirtti) TData : public TObject
{
public:
String Name;
};
并确保您未通过#pragma explicit_rtti
明确禁用RTTI。