您不能使用ARRAYOFCONST()
或OPENARRAY()
创建一个 0 元素的开放数组。这些宏至少需要 1 个输入值。
我不熟悉 SuperObject,但如果O[]
从现有值创建一个新的 JSON 数组并A[]
简单地填充数组,您可以尝试使用宏直接从 if is aSLICE()
创建和填充一个 openarray :v
v
std::vector<TVarRec>
if (!v.empty())
json->O["data.names"] = SA( SLICE(&v[0], v.size()) );
如果你真的需要一个 0 元素的 openarray,如果v
它是空的,试试这个:
if (v.empty())
json->O["data.names"] = SA( NULL, -1 );
else
json->O["data.names"] = SA( SLICE(&v[0], v.size()) );
如果v
不包含TVarRec
值,那么您可以先创建一个单独的std::vector<TVarRec>
,然后再将SLICE()
其创建到 SuperObject 中(请注意,因为TVarRec
不会对引用计数的数据类型(例如字符串)执行引用计数 - 按照设计- 所以请确保在您分配TVarRec
值,否则它们将被泄露!):
if (v.empty())
json->O["data.names"] = SA( NULL, -1 );
else
{
std:vector<TVarRec> tmp(v.size());
for (size_t idx = 0; idx < v.size(); ++idx)
tmp[idx] = v[idx];
json->O["data.names"] = SA( SLICE(&tmp[0], tmp.size()) );
}