2012-10-10 24 views
5

Tôi chỉ làm việc trước đó với C++ trong môi trường phát triển Visual Studio. Bây giờ tôi đã được yêu cầu nhận và gửi dữ liệu bằng JSON.Có ai làm việc với JSON trong C++ trong Visual Studio 2010

Tôi đã tìm kiếm trên Internet nhưng không thể tìm thấy bất kỳ ví dụ nào về JSON đang được C++ sử dụng trong Visual Studio. Nếu ai đó đã làm việc với JSON trong C++ trong Visual Studio 2010, vui lòng chuyển vào liên kết.

+0

Hãy thử cách này: [Json11] (https://github.com/dropbox/json11) hoặc [PicoJSON] (https://github.com/kazuho/picojson). Không có BOOST. – Sergo

Trả lời

3

Nếu bạn sẽ cài đặt tăng :: tinh thần bạn có thể sử dụng lib này JSON Spirit. Làm việc với VS như một sự quyến rũ.

CẬP NHẬT Bao gồm thư mục tinh thần json và sử dụng

#include <json_spirit/json_spirit.h> 
#include <json_spirit/json_spirit_reader_template.h> 
#include <json_spirit/json_spirit_writer_template.h> 
+0

Làm thế nào để cài đặt tăng :: tinh thần, bạn có thể vui lòng hướng dẫn? – Dany

+0

Chỉ cần tải xuống từ đây http://boost-spirit.com/home/ và bao gồm tiêu đề –

+2

tôi đã tải xuống dự án của anh ấy được đưa ra trên liên kết JSON Spirit.It bao gồm năm dự án, bạn có thể chỉ cho tôi biết cái nào có JSON OBJECT không như là đối số mà tôi nhận được từ một trong những phương pháp của tôi của C# DLL phân tích nó và lưu trữ nó trong một tập tin. – Dany

1

JsonCpp là trình phân tích cú pháp JSON C++ được xây dựng trong VS theo README của chúng.

+0

Tôi không làm việc – Dany

+0

Không hỗ trợ unicode đúng cách – daisy

1

Apache Thrift hỗ trợ JSON. Đây là một lựa chọn tốt, bởi vì ngoài JSON, bạn cũng nhận được các cơ chế truyền tải (các socket TCP, vv) và tùy chọn trong một môi trường đa luồng.

Here bạn có thể tìm thông tin về JSON dành cho cửa sổ.

Tiết kiệm là đa nền tảng, vì vậy nó sẽ hoạt động khá tốt với VS.

0

Bạn có thể thử rapidjson.

Nó nhỏ, nhanh, hỗ trợ nguyên bản VC2008/2010, với các phụ thuộc tối thiểu (ví dụ: không có BOOST, thậm chí không STL).

Nó có thể phân tích cú pháp và tạo JSON bằng SAX hoặc API kiểu DOM.

0

Json11 - là một thư viện JSON nhỏ cho C++ 11, cung cấp phân tích cú pháp JSON và tuần tự hóa.

Đối tượng lõi được cung cấp bởi thư viện là json11 :: Json. Một đối tượng Json đại diện cho bất kỳ giá trị JSON nào: null, bool, number (int hoặc double), chuỗi (std :: string), mảng (std :: vector) hoặc đối tượng (std :: map).

Các đối tượng Json hoạt động như các giá trị. Chúng có thể được gán, sao chép, di chuyển, so sánh với sự bình đẳng hoặc trật tự, v.v. Ngoài ra còn có các phương thức trợ giúp Json :: dump, để tuần tự hóa một Json thành một chuỗi và Json :: parse (static) để phân tích một chuỗi std :: như một đối tượng Json.

Ví dụ:

 const string simple_test = 
      R"({"k1":"v1", "k2":42, "k3":["a",123,true,false,null]})"; 
     string err; 
     auto json = Json::parse(simple_test, err); 
     std::cout << "k1: " << json["k1"].string_value() << "\n"; 

PicoJSON - là một JSON phân tích cú pháp nhỏ/serializer cho C++ với thuộc tính sau:

  • header-tập tin chỉ
  • không phụ thuộc bên ngoài (chỉ sử dụng thư viện chuẩn C++)
  • STL-frendly (mảng là repr esented bằng cách sử dụng std :: vector, các đối tượng là std :: bản đồ)
  • cung cấp cả giao diện kéo và streaming() giao diện dựa trên sự kiện

Ví dụ:

 std::string json1 = R"({ "k1":"v1", "k2" : 42, "k3" : ["a",123,true,false,null] })"; 
     picojson::value v; 
     std::string err1 = picojson::parse(v, json1); 
     const picojson::object& o = v.get<picojson::object>(); 
     for (picojson::object::const_iterator i = o.begin(); i != o.end(); ++i) { 
      std::cout << i->first << " " << i->second << std::endl; 
     } 

Cả hai dễ dàng sử dụng trong Visual Studio với tiêu chuẩn libriries (KHÔNG có bất kỳ phụ thuộc bổ sung).

Các vấn đề liên quan