私は以下のように、WebからJSONの例を使用しています。JSON形式のヘルプ
{
"menu": "File",
"commands": [
{
"title": "New",
"action":"CreateDoc"
},
{
"title": "Open",
"action": "OpenDoc"
},
{
"title": "Close",
"action": "CloseDoc"
}
]
}
これをC++とPythonの2つの異なるパーサーでロードしようとしました。
ここにはPythonのトレースバックがあります。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/json/__init__.py", line 267, in load
parse_constant=parse_constant, **kw)
File "/usr/lib/python2.6/json/__init__.py", line 307, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.6/json/decoder.py", line 319, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.6/json/decoder.py", line 338, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
次に、jsoncppが報告する内容を示します。
* Line 1, Column 1
Syntax error: value, object or array expected.
私は間違っていると思いますか?
編集:
ここにいくつかのコードがあります。何らかの理由でPythonが動作しています。私は何もしなかったが、店に行く。これはPythonの機能でなければなりません。ストアに行くと、ランダムなエラーが消えます。それらのPython開発者は天才です。
しかし、ポイントです。ここにC++のコードがあります。
bool CFG::CFG_Init(const char* path) {
bool r = reader.parse(path, root);
if(r) {
return true;
} else {
std::cout << reader.getFormatedErrorMessages() << std::endl;
return false;
}
}
私はこれを試しましたが、 'path'はstd :: stringでも同じです。私はこのようなメソッドを呼び出しています:
if(!CFG_Init("test.json")) {
error("Couldn't load configuration.");
}
そしてここにクラスがあります。
class CFG: virtual Evaluator {
Json::Reader reader;
public:
Json::Value root;
bool CFG_Init(const char* path);
Json::Value CFG_Fetch_Raw(Json::Value section, std::string key, Json::Value defval);
Json::Value CFG_Fetch(Json::Value section, std::string key, Json::Value defval);
};
私たちに推測させる代わりに、デコードするコードを表示するのはどうですか? –
@Paul彼は単純なJSONインポーター –
@Stefanoで物をインポートしていると思いますが、JSONは完全に良いので、彼のコード(JSONコードの読み込み方法やJSONコードの呼び出し方法など)何らかのエラーがあります。だから、彼がそれをロードするために使用しているコードを表示することで、問題の診断に役立ちます。 –