Delphi和C++都是常用的編程語言,在實際開發中經常需要處理JSON數據。JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易于閱讀和編寫,也易于機器解析和生成。
Delphi和C++都提供了各自的JSON解析庫和序列化庫。其中,Delphi內置了TJSON對象來處理JSON數據,而在C++中,可以使用第三方庫如RapidJSON,JSON for Modern C++等。下面分別介紹Delphi和C++中的JSON處理。
// Delphi示例代碼 var jsonObj: TJSONObject; jsonArray: TJSONArray; jsonStr: string; begin // 創建JSON對象 jsonObj := TJSONObject.Create; jsonObj.AddPair('name', 'Tom'); jsonObj.AddPair('age', '20'); // 添加JSON數組到JSON對象中 jsonArray := TJSONArray.Create; jsonArray.Add('apple'); jsonArray.Add('banana'); jsonArray.Add('orange'); jsonObj.AddPair('fruits', jsonArray); // 序列化JSON對象為JSON字符串 jsonStr := jsonObj.ToJSON; ShowMessage(jsonStr); // 反序列化JSON字符串為JSON對象 jsonObj := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(jsonStr), 0) as TJSONObject; ShowMessage(jsonObj.GetValue('name').Value); end;
// C++示例代碼,使用RapidJSON #include#include "rapidjson/document.h" #include "rapidjson/writer.h" #include "rapidjson/stringbuffer.h" using namespace rapidjson; int main() { // 創建JSON對象 Document doc; doc.SetObject(); Value name("Tom", doc.GetAllocator()); doc.AddMember("name", name, doc.GetAllocator()); doc.AddMember("age", 20, doc.GetAllocator()); // 添加JSON數組到JSON對象中 Value fruits(kArrayType); fruits.PushBack("apple", doc.GetAllocator()); fruits.PushBack("banana", doc.GetAllocator()); fruits.PushBack("orange", doc.GetAllocator()); doc.AddMember("fruits", fruits, doc.GetAllocator()); // 序列化JSON對象為JSON字符串 StringBuffer buffer; Writer writer(buffer); doc.Accept(writer); std::cout<< buffer.GetString()<< std::endl; // 反序列化JSON字符串為JSON對象 Document newDoc; newDoc.Parse(buffer.GetString()); std::cout<< newDoc["name"].GetString()<< std::endl; return 0; }
總之,在處理JSON數據時,無論是使用Delphi還是C++,都需要了解JSON的基本語法和數據結構,并根據需求使用相應的JSON庫。