在c mvc中解析json是很重要的技能之一,因為現(xiàn)在許多web應(yīng)用都需要處理json數(shù)據(jù)。下面是一個簡單的例子來說明如何在c mvc中解析json。
#include <stdio.h> #include <stdlib.h> #include <jansson.h> int main() { char *json_string = "{\"name\": \"張三\", \"age\": 20}"; json_t *root; json_error_t error; root = json_loads(json_string, 0, &error); if(!root) { printf("解析json出錯: %s\n", error.text); exit(1); } const char *name; int age; json_unpack(root, "{s:s, s:i}", "name", &name, "age", &age); printf("name: %s\n", name); printf("age: %d\n", age); json_decref(root); return 0; }
這個例子中我們首先定義了一段json字符串,然后用json_loads函數(shù)將它解析成一個json對象。如果解析失敗,我們輸出錯誤信息并結(jié)束程序。
接下來我們使用json_unpack函數(shù)從json對象中提取數(shù)據(jù)。它的第一個參數(shù)是我們要提取數(shù)據(jù)的json對象,第二個參數(shù)是一個格式化字符串,用來指定我們要提取的數(shù)據(jù)類型以及存儲它們的變量。在這個例子中,我們要提取的是一個字符串和一個整數(shù),于是用{s:s, s:i}來表示這個格式化字符串。第三個參數(shù)之后的一系列變量就是我們要存儲提取出的數(shù)據(jù)的變量。在這個例子中,我們有一個名為name的字符串變量和一個名為age的整數(shù)變量。
最后我們輸出提取出的數(shù)據(jù)并將json對象引用計數(shù)減少一,以釋放它占用的內(nèi)存。