微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在RapidJSON中添加setdistinct元素

如何解决在RapidJSON中添加setdistinct元素

我想创建以下Json对象

 {
    "name":"abc","property1"=[2010,2013,2015],"property2"=["str1,"str2",str3"],"property3"=[true,false]
 }

property1,property2,property3本质上是一个数组,但是具有不同的元素。 目前,我正在通过以下方式进行创建:

document.AddMember("property1",Value(kArrayType),allocator);
document.AddMember("property2",allocator);
document.AddMember("property3",allocator);

然后,我遍历列表并将对象中的值推送通过:

for (auto& iter: object_info_list) {
    document["property1"].PushBack(iter->property1,allocator); //int value
    document["property2"].PushBack(iter->property2,allocator); // string value
    document["property3"].PushBack(iter->property3,allocator); // bool value
}

但是上面的语句也会推送所有值(重复项)。有没有一种方法可以只添加不同的值(如c ++中设置的值)

提前谢谢

解决方法

JSON没有很多数据类型。您将需要在要复制的C ++数据结构中进行重复数据删除。

例如

std::set<int> property1;
std::set<std::string> property2;
std::set<bool> property3;

for (auto& iter: object_info_list) {
    property1.insert(iter->property1);
    property2.insert(iter->property2);
    property3.insert(iter->property3);
}

for (auto val : property1) {
    document["property1"].PushBack(val,allocator);
}

for (auto val : property2) {
    document["property2"].PushBack(val,allocator);
}

for (auto val : property3) {
    document["property3"].PushBack(val,allocator);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。