JSON是一種常用的輕量級數據交換格式,它使用鍵值對的方式存儲數據,并且擁有良好的可讀性和可擴展性。但是,在使用JSON時,我們需要保證括號的匹配,否則就會出現解析錯誤的情況。
{ "name": "張三", "age": 18, "hobbies": [ "籃球", "足球", "游泳" ]
上面這段代碼中,hobbies字段的右括號沒有被匹配,導致這個JSON數據解析失敗。
為了避免這種情況的發生,我們可以使用棧來進行括號匹配的檢查。
bool isJsonValid(const char* json) { int len = strlen(json); std::stack<char> st; for (int i = 0; i < len; i++) { char ch = json[i]; if (ch == '{' || ch == '[') { st.push(ch); } else if (ch == '}' || ch == ']') { if (st.empty() || !isMatch(st.top(), ch)) { return false; } st.pop(); } } return st.empty(); } bool isMatch(char ch1, char ch2) { return (ch1 == '{' && ch2 == '}') || (ch1 == '[' && ch2 == ']'); }
上面這段代碼實現了一個簡單的JSON括號匹配檢查器。它使用一個棧來存儲左括號,遇到右括號時就彈出棧頂元素和當前括號進行匹配。
使用這個檢查器可以避免許多JSON解析的問題,保證我們的數據能夠正確地被解析和使用。