問題タブ [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 を呼び出してから、次のように参照をプリキャッシュする代わりに:

変更:

これはかなり良かったです。シークを 1 回だけではなく 2 回実行するように保存します。しかし、ここで問題が発生します。

Rapidjson が nullvalue (シークが失敗したときにデフォルトで返される) を実装する方法を調べ始めると、次のコードが表示されます。

そのため、メンバーが見つからない場合は、ローカルの静的変数を返します。これは一見すると十分に聞こえるかもしれませんが、これは参照によって返されるため、隠れたバグに簡単につながる可能性があります。

誰かが静的な NullValue の参照を変更したとします。これにより、NullValue が別の型またはランダム メモリに変更されるため、IsNull への以降のすべての呼び出し (検索後) が失敗します。

それで、あなたは何をしますか?これはヌル パターンの良い例だと思いますか?

私は混乱しています。デフォルトの null 値を返すという考えは好きですが、const として返されないため、これは危険です。また、すべての場合に const として返す場合でも、開発者は引き続き const_cast を使用できます (ただし、そうする場合、開発者が責任を負うことになるとは思いません)。

このような他のケースや例を聞きたいです。そして、誰かがrapidjsonコードの下で実際のソリューションを提供できれば、基本的に素晴らしくて驚くべきものになるでしょう.

0 投票する
1 に答える
4121 参照

c++ - VisualStudio 2013 での rapidJSON と UNICODE

解決方法がわからない問題に遭遇しました。これが私のコードです。

プロジェクトの文字セットの値が「Unicode 文字セットを使用する」の場合、コンパイルできません。「マルチバイト文字セットを使用する」に設定されている場合のみ。

エラーは言う:

Rapidjson が utf8 のみをサポートし、すべてが utf16 である現在のプロジェクトでは動作しないという悪い予感がしました。または、文字セットが Unicode に設定されている場合に使用する方法はありますか?

ありがとうございました

yary

0 投票する
1 に答える
1112 参照

c++ - C ++でrapidJsonを使用したJson解析でエラーが発生する

指定された文字列の形式を以下に示します。

配列内のオブジェクトであり、その配列はオブジェクト内にあります。しかし、この文字列を解析すると:

document.h が含まれています

ドキュメント obj; 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を取得する方法.メインオブジェクトには、文字列の周りに\"\"がありません.As this format is returned from an ?

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 投票する
2 に答える
2105 参照

c++ - Rapidjsonの解析でdouble値の生の文字列(またはバイト)を取得していますか?

Rapidjson を使用して json を解析しているときに、double 値の基礎となるバイトを取得する方法はありますか?

以下のコードを見てください。

のようなものを取得したい

val.GetRawString(); val.GetDouble(); の代わりに

これが必要な理由は、変換中に精度が失われたくないからです。double 値を引用符で囲むように json を変更する選択肢がないことに注意してください。

0 投票する
1 に答える
295 参照

c++ - gzstream libの最後の文字「-1」を使用したrapidjson

私は、rapidjson 0.1 (ios、xcode 6.1) で使用する gzstream 1.5 の単純なラッパーを作成しました。

問題: Peek() と Take() で eof をチェックする必要があります。それ以外の場合、最後の文字として '\377' (-1) を取得します。std::basic_stream::get() at eof によって返されることを私は知っています。

よりエレガントで適切でクリーンなソリューションは何ですか?

0 投票する
3 に答える
3894 参照

c++ - Rapidjson を使用した奇妙なメンバー名の文字列

オブジェクトタイプのドキュメントにいくつかのメンバーを追加するこのコードがあります

そしてこの作品を連載する

しかし、得られた値は

誰かが理由を知っていますか?