2011-08-10 9 views
16

Có ai quen thuộc với giải pháp C++ ổn định (thư viện, đoạn mã, v.v.) có chuyển đổi các thư protobuf thành/từ JSON không?C++ Protobuf đến/từ chuyển đổi JSON

+1

tin nhắn protobuf * tự mình * không thực sự có đủ thông tin cho điều đó; Tôi sẽ chỉ deserialize vào một mô hình đối tượng (protobuf), và serialize (sự lựa chọn của bạn về động cơ json) mà ... Tôi không sử dụng C + + mặc dù, vì vậy tôi không biết các tùy chọn chính xác có sẵn (nó là một khoe với protobuf-net, nhưng: nền tảng khác nhau) –

+1

Cảm ơn bạn rất nhiều vì ý tưởng này, Marc. Nó chắc chắn sẽ tiết kiệm rất nhiều thời gian. Tôi cũng đang xem xét thử cơ chế phản xạ của protobuf. Hy vọng rằng một trong những cách tiếp cận sẽ làm việc :) –

+1

Tôi nghĩ rằng việc sử dụng cơ chế phản chiếu của protobuf là một cách tiếp cận tốt để tạo một trình phân tích cú pháp/trình phân tích cú pháp JSON chung từ JSON thành các kiểu được tạo ra protobuf. Tôi đã thực hiện một cái gì đó như thế này, nhưng để CORBA IDL tạo ra các loại trong http://code.google.com/p/corbasim/ –

Trả lời

3

Tôi đã thực hiện triển khai bootstrap của trình phân tích cú pháp JSON cho các kiểu được tạo ra protobuf, sử dụng cơ chế phản chiếu của nó và điều chỉnh phân tích cú pháp mà tôi đã tạo trước đó cho các loại tạo ra Corba IDL.

Bạn có thể tìm thấy nó ở http://corbasim.googlecode.com/svn/trunk/protobuf2json_exported.zip

Bằng cách này cho mỗi tin nhắn protobuf xác định, bạn sẽ có thể để phân tích trường hợp của mình bằng cách thực hiện:

Foo foo; 

const std::string json_foo = "{\"text\": \"Hello world\"}"; 

protobuf2json::json::parse(foo, json_foo); 

Nó chỉ là một thực hiện ban đầu, và nó chỉ hỗ trợ các trường chuỗi, nhưng thật dễ dàng để triển khai tất cả các loại trường.

1

pb2json là một thư viện C++ khác có thể thực hiện việc này.

3

pbjson là một số khác, trong đó xây dựng trên rapidjson, có thể nhanh hơn.