问题标签 [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.
c++ - 此代码是否访问 C++ 类中的关联数组?
我正在查看可能集成的rapidjson代码。我可以看到,由于新的 C++11,您实际上可以在 C++ 中执行关联数组,尽管我不确定速度优势。但是,在他们的示例代码中,我看到了这一点:
看起来 Document 是一个具有被调用方法的类,但同时他能够使用document["hello"]作为关联数组来访问它?这就是这里发生的事情吗?
rapidjson - 如何在 rapidjson 中访问刚刚添加的 json 对象?
我想做我认为在 rapidjson 中非常基本的事情。我想开始一个新对象,然后向该对象添加成员 - 但我很难找出如何正确地做到这一点。我是这样开始的:
接下来我想让 this->rapCurrent 指向新创建的对象成员。我发现完成这项工作的唯一方法是
对于如此简单的任务,这对我来说看起来非常复杂。有人可能知道如何更简单吗?
非常感谢!
蒂莫
c++ - 使用 cmake 在项目属性(eclipse)中添加定义
我正在使用 rapidjson,我想使用 std::string's。然后我必须定义这个-DRAPIDJSON_HAS_STDSTRING。
我的 CMakeLists.txt 现在有:
它构建正常。
问题是在 Eclipse CDT 中,我希望索引器能够识别该定义。然后它不会将某些功能标记为错误。
如何使用 CMakeLists.txt 做到这一点?我没有运气就试过了:
c++ - 在 rapidjson 上,仅将数字编码为字符串,然后对其进行解码
使用rapidjson,如何将数字编码为 json 格式?我有 123.321,我想将其转换为“123.321”,然后将其保存在文件中。稍后使用 json 将其转换回 123.321。我不想使用另存为“{“tag”:“value”}”的文档,我希望它只保存为“值”,然后再转换回来。
我有以下代码将数字转换为“数字”:
如何转换回来?以下是解决方案吗?我不想使用处理程序!
感谢即将到来的帮助。
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 设为静态,它不会出现段错误 - 不确定这是否是最好的解决方法?
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的建议,正确的代码如下:
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
' Wheel
s 的相应文档中。
我怎样才能做到这一点?
c++ - 使用 rapidjson 删除 JSON 中的嵌套对象
我正在尝试删除嵌套在 JSON 文件中的对象中的对象。但是,我在互联网或官方 rapidjson 页面上找不到任何示例。我的代码是用 C++ 编写的。
我尝试过使用以下代码:
但是我不确定要传递什么参数或如何为确切的元素初始化 MemberIterator(因为我已经知道要删除的对象的名称)。
以下是 JSON 结构的示例:
floating-point - 使用 RapidJSON 对双精度类型进行舍入
我正在使用 RapidJSON ( https://github.com/miloyip/rapidjson ) 创建相当大的数组 (~ 5 MB) 并且由于浮点数太准确而浪费了大量空间。例如
这会产生一个 json "{'value': 0.33333333333}" 当我只需要几个有效数字时这很烦人。
我在这篇文章中找到了使用 rapidjson 设置浮点精度的解决方案,但它已经有几年历史了,并且在最新的 rapidjson 版本中已经过时。有没有人对此有解决方案?