VisualStudio2015 C++で、JSONファイルの読込を実装しようとしています。
ライブラリはRapidJSONを使っています。
JSONファイルをパースする所で、エラー「文字列中に無効な文字があります」が発生しましたが、
その理由が分かりません。
試行錯誤した結果、「表」という文字がJSONファイルに含まれているとパースでエラーが発生します。
別の文字であればエラーが発生せずに正常にパースでき、値の取得もできるため、コードのどの部分を修正すればよいか分からず悩んでいます。
C++に対する知識もまだ浅いため、文字によらずパース可能にするためにはどこを改善すべきかご教授頂けますと助かります。
宜しくお願いいたします。
JSONファイル
[
{
"Cd" : "A001",
"Nm" : "裏"
},
{
"Cd" : "A002",
"Nm" : "表"
}
]
コード ※doc.HasParseError();でエラー発生
#include "stdafx.h" #include "rapidjson/document.h" #include "rapidjson/istreamwrapper.h" #include <iostream> #include <fstream> #include <Windows.h> #include <string> using namespace rapidjson; int main() { std::ifstream ifs{ R"(D:\work\TESTJ.json)" }; if (!ifs.is_open()) { //OPENエラー return -1; } IStreamWrapper isw{ ifs }; Document doc; doc.ParseStream(isw); bool error = doc.HasParseError(); if (error) { //Parseエラー return -1; } // string rapidjson::Value& NM = doc; int i, l = NM.Size(); for (i = 0; i < l; i++) { char cVal; std::cerr << NM[SizeType(i)]["Nm"].GetString() << std::endl; } return 0; }
回答3件
あなたの回答
tips
プレビュー