C語言中,字符串是使用字符數組表示的,而JSON是一種基于文本的數據交換格式,一般使用字符串表示。因此,在C/C++中需要將字符數組轉換為JSON對象,以便在網絡傳輸或文件讀寫時能夠方便地進行數據交換。
轉換的過程需要使用JSON庫,C/C++中比較常用的JSON庫有rapidjson、cJSON等。在使用這些庫之前,需要將字符數組解析為一個JSON的鍵值對結構,這就需要使用一些字符串處理函數了。
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
int main() {
char *jsonStr = "{ \"name\": \"Alice\", \"age\": 22 }";
rapidjson::Document doc;
doc.Parse(jsonStr);
// 遍歷JSON對象
for (auto& member : doc.GetObject())
{
printf("%s: ", member.name.GetString());
if (member.value.IsString())
printf("%s\n", member.value.GetString());
else if (member.value.IsInt())
printf("%d\n", member.value.GetInt());
}
// 構造JSON對象
rapidjson::Document doc2;
doc2.SetObject();
rapidjson::Document::AllocatorType& allocator = doc2.GetAllocator();
doc2.AddMember("name", "Bob", allocator);
doc2.AddMember("age", 28, allocator);
// 將JSON對象轉換為字符串
rapidjson::StringBuffer strBuf;
rapidjson::Writerwriter(strBuf);
doc2.Accept(writer);
printf("%s\n", strBuf.GetString());
return 0;
}
在上述示例中,我們使用了rapidjson庫來解析和構造JSON對象。首先,我們將一個字符串解析為一個名為doc的JSON對象。然后,我們遍歷了該對象并輸出了其中的鍵值對信息。接下來,我們構造了一個名為doc2的JSON對象,并將它的內容設為{ "name": "Bob", "age": 28 }。最后,我們使用rapidjson庫中的Writer類將這個JSON對象轉換為字符串并輸出。
上一篇c#生產json文件
下一篇c字符串轉換json