在前端開發中,我們常常需要將從后端獲取到的數據轉換為可供 JavaScript 代碼理解的格式。其中,JSON 是一種輕量級的數據交換格式,在前后端交互時非常常見。
然而,有時候我們會出現 C 代碼轉為 JSON 后無法被 JavaScript 代碼理解的情況。這是因為 C 語言類型與 JavaScript 類型不完全一致,部分類型轉換需要手動處理。
// 示例 C 代碼 struct Person { char name[20]; int age; bool isStudent; }; Person person = {"John", 25, true};
上面是一個簡單的 C 代碼結構體,我們需要將其轉換為 JSON 格式。使用常見的 json-c 庫,可以輕松實現:
// C 代碼轉為 JSON 代碼 json_object *person_json = json_object_new_object(); json_object_object_add(person_json, "name", json_object_new_string(person.name)); json_object_object_add(person_json, "age", json_object_new_int(person.age)); json_object_object_add(person_json, "isStudent", json_object_new_boolean(person.isStudent));
這里使用了 json-c 庫中的函數 json_object_new_object 和 json_object_object_add,將 C 代碼的結構體轉換為 JSON 數據。
接下來,我們在 JavaScript 中嘗試讀取這段轉換后的 JSON 代碼:
// JavaScript 代碼讀取 JSON var personObj = JSON.parse(person_json); console.log(personObj.age);
這段代碼似乎無法正常工作,會拋出一個 TypeError 錯誤。這是因為 JSON.parse 函數返回的是一個對象,我們需要將其轉換為真正的 JavaScript 對象。
// 前端需要手動轉換為 JS 對象 var personObj = JSON.parse(person_json); var jsPersonObj = {}; jsPersonObj.name = personObj.name; jsPersonObj.age = parseInt(personObj.age); jsPersonObj.isStudent = personObj.isStudent; console.log(jsPersonObj.age);
在轉換后,我們即可成功輸出對象的某個屬性值。需要注意的是,由于 JSON 中的數字默認為字符串類型,我們需要將其轉換成 JavaScript 中的數字格式。
總的來說,C 轉為 JSON 不是太復雜,但需要注意類型的轉換。而且在 JavaScript 中讀取 JSON 代碼時,需要手動轉換為真正的 JavaScript 對象,方能使用。
上一篇c 轉json格式轉換