Tôi đang sử dụng ví dụ JSON ra khỏi web, như được thấy bên dưới.Trợ giúp với định dạng JSON
{
"menu": "File",
"commands": [
{
"title": "New",
"action":"CreateDoc"
},
{
"title": "Open",
"action": "OpenDoc"
},
{
"title": "Close",
"action": "CloseDoc"
}
]
}
Tôi đã thử tải trong hai trình phân tích cú pháp khác nhau, một trong C++ và bằng Python.
Đây là traceback của 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
Và đây là những gì jsoncpp báo cáo.
* Line 1, Column 1
Syntax error: value, object or array expected.
Bất kỳ đầu mối nào tôi đang làm sai?
Chỉnh sửa:
Ok, đây là một số mã. Đối với một số lý do bây giờ Python làm việc. Tôi không làm gì ngoài đi đến cửa hàng. Đó phải là một tính năng Python - goto cửa hàng, các lỗi ngẫu nhiên biến mất. Những người phát triển Python là những thiên tài.
Nhưng đến thời điểm này. Đây là mã 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;
}
}
Tôi đã thử điều này khi 'đường dẫn' là chuỗi tiêu chuẩn :: giống nhau. Tôi gọi phương thức như sau:
if(!CFG_Init("test.json")) {
error("Couldn't load configuration.");
}
Và đây là lớp học.
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);
};
Làm thế nào để hiển thị mã bạn đang sử dụng để giải mã nó thay vì khiến chúng tôi đoán? –
@Paul Tôi đoán anh ta chỉ nhập dữ liệu với một trình nhập JSON thuần túy –
@Stefano Có, nhưng vì JSON đó là hoàn toàn tốt, thủ phạm có thể là mã của anh ấy (trong cách anh ta tải tệp vào hoặc gọi mã JSON) có một số lỗi. Vì vậy, hiển thị mã mà anh ấy đang sử dụng để tải nó sẽ giúp chúng tôi chẩn đoán sự cố. –