Tôi mới ở dạng rapidjson. Tôi có test.json
chứa {"points": [1,2,3,4]}
lấy dữ liệu mảng từ tệp json bằng cách sử dụng rapidjson
và tôi sử dụng mã sau đây để có được dữ liệu của mảng "points"
std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename("json/deluxe/treasurebag.json");
unsigned long bufferSize = 0;
const char* mFileData = (const char*)CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), "r", &bufferSize);
std::string clearData(mFileData);
size_t pos = clearData.rfind("}");
clearData = clearData.substr(0, pos+1);
document.Parse<0>(clearData.c_str());
assert(document.HasMember("points"));
const Value& a = document["points"]; // Using a reference for consecutive access is handy and faster.
assert(a.IsArray());
for (SizeType i = 0; i < a.Size(); i++) // rapidjson uses SizeType instead of size_t.
CCLOG("a[%d] = %d\n", i, a[i].GetInt());
và kết quả của nó là
Cocos2d: a[0] = 1
Cocos2d: a[1] = 2
Cocos2d: a[2] = 3
Cocos2d: a[3] = 4
như mong đợi. Nhưng bây giờ khi tôi cố gắng để có được dữ liệu (được x
và y
) từ một mảng như thế này
{"points": [{"y": -14.25,"x": -2.25},{"y": -13.25,"x": -5.75},{"y": -12.5,"x": -7.25}]}
một lỗi xảy ra và ném đi trong biên dịch:
//! Get the number of elements in array.
SizeType Size() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.size; }
bất cứ ai có thể giải thích những gì tôi đã làm sai hay cái gì đó bị nhỡ? Xin lỗi vì tiếng Anh của tôi không tốt.
Mọi trợ giúp sẽ được đánh giá cao.
Cảm ơn.
Các json thứ hai thiếu dấu ngoặc ôm ở cuối. – Casey