问题标签 [rapidjson]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
231 浏览

c++ - 此代码是否访问 C++ 类中的关联数组?

我正在查看可能集成的rapidjson代码。我可以看到,由于新的 C++11,您实际上可以在 C++ 中执行关联数组,尽管我不确定速度优势。但是,在他们的示例代码中,我看到了这一点:

看起来 Document 是一个具有被调用方法的类,但同时他能够使用document["hello"]作为关联数组来访问它?这就是这里发生的事情吗?

0 投票
1 回答
240 浏览

rapidjson - 如何在 rapidjson 中访问刚刚添加的 json 对象?

我想做我认为在 rapidjson 中非常基本的事情。我想开始一个新对象,然后向该对象添加成员 - 但我很难找出如何正确地做到这一点。我是这样开始的:

接下来我想让 this->rapCurrent 指向新创建的对象成员。我发现完成这项工作的唯一方法是

对于如此简单的任务,这对我来说看起来非常复杂。有人可能知道如何更简单吗?

非常感谢!

蒂莫

0 投票
1 回答
650 浏览

c++ - 使用 cmake 在项目属性(eclipse)中添加定义

我正在使用 rapidjson,我想使用 std::string's。然后我必须定义这个-DRAPIDJSON_HAS_STDSTRING。

我的 CMakeLists.txt 现在有:

它构建正常。

问题是在 Eclipse CDT 中,我希望索引器能够识别该定义。然后它不会将某些功能标记为错误。

如何使用 CMakeLists.txt 做到这一点?我没有运气就试过了:

0 投票
1 回答
1747 浏览

c++ - 在 rapidjson 上,仅将数字编码为字符串,然后对其进行解码

使用rapidjson,如何将数字编码为 json 格式?我有 123.321,我想将其转换为“123.321”,然后将其保存在文件中。稍后使用 json 将其转换回 123.321。我不想使用另存为“{“tag”:“value”}”的文档,我希望它只保存为“值”,然后再转换回来。

我有以下代码将数字转换为“数字”:

如何转换回来?以下是解决方案吗?我不想使用处理程序!

感谢即将到来的帮助。

0 投票
1 回答
174 浏览

c++ - 在数据库上保存 json 格式的字符串时,我是否还应该保存值的类型以便稍后将其转换回来?

我在 c++ 上使用rapidjson将一些数字和字符串转换为json格式。然后将它们作为文本保存在 mysql 表的列中。

稍后当我想将该 TEXT 转换为实际值时:

  • 我怎么知道 TEXT 的值类型?
  • json 会为我这样做吗?转换为实际类型?
  • 我应该提前知道类型吗?

感谢即将到来的帮助。

0 投票
2 回答
1266 浏览

c++ - 使用 g++ 优化的 Rapidjson 段错误

我正在使用 Rapidjson 并注意到当我在 g++ (-O1/-O2/-O3) 中打开优化时,我遇到了分段错误。我想我已经追踪到了 rapidjson 中的 GenericValue& AddMember() 函数。

调试时,我可以看到 kDefaultObjectCapacity ( 正在优化(这是一个静态的 const SizeType kDefaultObjectCapacity = 16)

因此行“o.capacity = kDefaultObjectCapacity;” 没有被执行,并且 malloc 正在分配 0 字节然后尝试强制转换它。

为什么要删除此静态常量?

我曾尝试使 Object& o 既易变又静态,但均未奏效。有任何想法吗?

谢谢威尔

编辑:我无法在嵌入式平台上轻松运行测试,rapidjson 目前是使用 buildroot 构建的。我尝试了单元测试,但无法让它们达到目标。

我可以看看提供程序集,但它是大型应用程序的一部分,因此可能很难找到合适的位。

有关信息,这是调用 rapidjson 代码的方法,这似乎是问题所在:

如果我将 Document doc 设为静态,它不会出现段错误 - 不确定这是否是最好的解决方法?

0 投票
1 回答
5623 浏览

rapidjson - 从 JSON 字符串创建 rapidjson::Value

我想rapidjson::Value从 JSON 字符串创建一个,例如[1,2,3]. 注意:这不是一个完整的 JSON 对象,它只是一个 JSON 数组。在 Java 中,我可以使用从字符串objectMapper.readTree("[1,2,3]")创建一个。JsonNode

我完整的 C++ 代码如下:

谁能找出我函数中的问题str_to_json()

PS:上面的代码适用于 GCC 5.1.0,但不适用于 Visual Studio Community 2015。

更新

根据@Milo Yip的建议,正确的代码如下:

0 投票
1 回答
6828 浏览

c++ - Rapidjson:将外部子文档添加到文档

我想使用 Rapidjson 将嵌套结构序列化为 JSON,并且我还希望能够单独序列化每个对象,因此任何实现的类ToJson都可以序列化为 JSON 字符串。

在下面的代码中,Car有一个Wheel成员,两个类都实现了 method ToJson,它用它们的所有成员填充 a rapidjson::Document。从函数模板调用此方法ToJsonString,以获取所传递对象的格式化 JSON 字符串。

如您所见,Car::ToJson调用Wheel::ToJson是为了获取描述Wheel并将其添加为子对象,但由于分配管理,我想不出一个可接受的解决方案(我还阅读了其他问题)。

我发现的解决方法是在Car's中添加一个jsonDocument具有随机字段值的成员(在本例中rapidjson::kNullType),然后将其添加到CopyFrom' Wheels 的相应文档中。

我怎样才能做到这一点?

0 投票
1 回答
3306 浏览

c++ - 使用 rapidjson 删除 JSON 中的嵌套对象

我正在尝试删除嵌套在 JSON 文件中的对象中的对象。但是,我在互联网或官方 rapidjson 页面上找不到任何示例。我的代码是用 C++ 编写的。

我尝试过使用以下代码:

但是我不确定要传递什么参数或如何为确切的元素初始化 MemberIterator(因为我已经知道要删除的对象的名称)。

以下是 JSON 结构的示例:

0 投票
2 回答
3602 浏览

floating-point - 使用 RapidJSON 对双精度类型进行舍入

我正在使用 RapidJSON ( https://github.com/miloyip/rapidjson ) 创建相当大的数组 (~ 5 MB) 并且由于浮点数太准确而浪费了大量空间。例如

这会产生一个 json "{'value': 0.33333333333}" 当我只需要几个有效数字时这很烦人。

我在这篇文章中找到了使用 rapidjson 设置浮点精度的解决方案,但它已经有几年历史了,并且在最新的 rapidjson 版本中已经过时。有没有人对此有解决方案?