问题标签 [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 回答
1784 浏览

c++ - C++ - RapidJSON 没有成员 Writer

我使用这段代码用 rapidjson 对 dom 进行字符串化:

但是我得到了 Writer 不是 rapidjson 命名空间的成员的错误。

我的包括:

如示例 simpledom.cpp 中所述。

所以我的问题是这是一个错误还是需要另一个作家类?我错过了任何包括吗?我使用最新版本的 rapidjson。

0 投票
1 回答
7887 浏览

c++ - C++ rapidjson:GenericValue::IsNull 在任何情况下都返回 false

在我们的项目中发现一个神秘问题后,我仍然感到震惊。

我们意识到调用 HasMember("string") 正在执行额外的查找。因此,出于性能原因,我们对其进行了更改。

主要思想是:

而不是调用 HasMember 并随后预先缓存引用,例如:

变成:

这非常好,我们节省了执行两次查找而不是一次查找。然而,问题来了。

如果您开始查看 rapidjson 如何实现 nullvalue(在 seek 失败时默认返回),您将看到以下代码:

所以,如果没有找到我们返回一个局部静态变量的成员。乍一看这可能听起来足够好,但由于这是通过引用返回的,因此很容易导致隐藏的错误。

想象一下,有人更改了静态 NullValue 的引用。这将导致对 IsNull 的所有进一步调用(在查找它之后)将失败,因为 NullValue 更改为另一种类型,甚至更改为随机内存。

那么,你在乎什么呢?你认为这是一个很好的空模式示例吗?

我很困惑,我喜欢返回默认空值的想法,但由于不作为 const 返回,这很危险。而且,即使我们在所有情况下都将它返回为 const,开发人员仍然可以使用 const_cast(但我不认为,如果他们这样做,将由他们负责)。

我想听听像这样的其他案例和例子。如果有人能在 rapidjson 代码下给出一个真正的解决方案,那基本上就很棒了。

0 投票
1 回答
4121 浏览

c++ - VisualStudio 2013 中的 rapidJSON 和 UNICODE

我遇到了一个不知道如何解决的问题。这是我的代码。

当项目字符集值为“使用 Unicode 字符集”时,我无法编译。仅当它设置为“使用多字节字符集”时。

错误说:

我有一种不好的感觉,rapidjson 只支持 utf8,它不适用于我当前的项目,它全部都是 utf16,或者当字符集设置为 unicode 时有没有办法使用它?

谢谢

亚里

0 投票
1 回答
1112 浏览

c++ - 在c ++中使用rapidJson解析Json给出错误

给定的字符串格式如下:

数组中的对象,并且该数组在对象中。但是当我解析这个字符串时:

包含 document.h

文档对象;obj.Parse<0>(json);

它给出了一个错误:

document.h:1718:22: 注意:模板 rapidjson::GenericDocument& rapidjson::GenericDocument::Parse(const Ch*) [with unsigned int parseFlags = parseFlags, SourceEncoding = SourceEncoding, Encoding = rapidjson::UTF8<>, Allocator = rapidjson::MemoryPoolAllocator<>, StackAllocator = rapidjson::CrtAllocator, rapidjson::GenericDocument = rapidjson::GenericDocument >, rapidjson::GenericDocument::Ch = char] document.h:1729:22: 注意:模板 rapidjson::GenericDocument& rapidjson::GenericDocument::Parse(const Ch*) [with unsigned int parseFlags = parseFlags, Encoding = rapidjson::UTF8<>, Allocator = rapidjson::MemoryPoolAllocator<>, StackAllocator = rapidjson::CrtAllocator, rapidjson::GenericDocument = rapidjson::GenericDocument >, rapidjson::GenericDocument::Ch = char]

我如何 json 解码该格式并检索assetId。主对象在字符串周围没有 \"\" 因为这种格式是从 api 返回的?

0 投票
5 回答
2402 浏览

c++ - 当 JSON 中有非法字符时,如何防止 JSON 解析器崩溃?

由于一些通信错误,我有时会收到带有一些非法字符的 JSON 字符串: "{messageType\" : \"Test1\", \"from\" : \"F2D0B5C6-9875-46B5-8D4F\"}����1"

这些非法字符使我的 JSON 解析器崩溃。我正在使用 RapidJSON JSON 解析器 (C/C++)。您能否告诉我是否有一种方法可以从字符串中过滤掉这些不需要的字符并验证 json 字符串的完整性。

0 投票
2 回答
20622 浏览

c++ - 使用 rapidjson 从 json 文件中获取数组数据

我是 rapidjson 的新手。我有test.json其中包含{"points": [1,2,3,4]}

我使用以下代码获取数组数据"points"

结果是

正如预期的那样。但是现在当我尝试从这样的数组中获取数据(获取x和)时y

{"points": [{"y": -14.25,"x": -2.25},{"y": -13.25,"x": -5.75},{"y": -12.5,"x": -7.25}]}

发生错误并在编译器中丢弃:

谁能解释我做错了什么或遗漏了什么?对不起,我的英语不好。

任何帮助将不胜感激。

谢谢。

0 投票
1 回答
988 浏览

c++ - 为 rapidjson readBuffer 设置合适的大小

所以我一直在我的一个 c++ 项目中使用 rapidjson,并且我已经弄清楚如何将它用于我的项目需求。但是在清理我的代码时,我看到我只是为我的缓冲区大小分配了一个随机数。

char readBuffer[80000]; rapidjson::FileReadStream readStream( file, readBuffer, sizeof( readBuffer ) );

有没有合适的方法来设置 readBuffer 需要多大?

0 投票
2 回答
2105 浏览

c++ - 在 rapidjson 解析中获取双精度值的原始字符串(或字节)?

有没有办法在使用 rapidjson 解析 json 时获取双精度值的底层字节。

看下面的代码:

我想得到类似的东西

val.GetRawString(); 而不是 val.GetDouble();

我需要这个的原因是我不希望在转换过程中丢失任何精度。请注意,我没有选择修改 json 以将双引号括起来。

0 投票
1 回答
295 浏览

c++ - rapidjson 与 gzstream lib last char '-1'

我已经编写了 gzstream 1.5 的简单包装器,用于与 rapidjson 0.1(ios,xcode 6.1)一起使用。

问题:我必须在 Peek() 和 Take() 中检查 eof。否则,我将 '\377' (-1) 作为最后一个字符。我知道它是由 std::basic_stream::get() 在 eof 返回的。

有什么更优雅、正确和干净的解决方案?

0 投票
3 回答
3894 浏览

c++ - 带有rapidjson的奇怪成员名称字符串

我有这段代码将一些成员添加到对象类型文档

和这件作品来序列化它

但得到的价值是

有人知道为什么吗?