对象到Json并返回

时间:2018-03-20 16:04:49

标签: c++ json c++builder

我正在尝试将对象转换为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));

我得到输出{}

1 个答案:

答案 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。