2012-10-10 22 views
5

以前はVisual Studio開発環境ではC++でしか働いていませんでした。今私はJSONを使用してデータを送受信するように求められています。誰かがVisual Studio 2010のC++でJSONを扱った人はいますか?

私はインターネットを検索しましたが、Visual StudioでC++で使用されているJSONの例は見つかりませんでした。 Visual Studio 2010のC++でJSONを使って作業している人は、そのリンクを渡してください。

+0

[Json11](https://github.com/dropbox/json11)または[PicoJSON](https://github.com/kazuho/picojson)を試してみてください。 BOOSTはありません。 – Sergo

答えて

3

boost :: spiritをインストールする場合は、このライブラリJSON Spiritを使用できます。魅力のようなVSで動作します。 JSON精神ディレクトリを含めると

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

boost :: spiritのインストール方法を教えてください。 – Dany

+0

ここからhttp://boost-spirit.com/home/からダウンロードし、ヘッダーを含めて –

+2

私はJSON Spirit.Itに5つのプロジェクトが含まれていますので、JSON OBJECTのどちらを取るか教えてください引数として私はC#のDLLの私のメソッドの1つから取得し、それをファイルに格納します。 – Dany

1

JsonCppは、VSでREADMEに基づいて構築されたC++ JSONパーサーです。

+0

私は働いていません – Dany

+0

ユニコードを正しくサポートしていません – daisy

1

Apache Thriftを使用

UPDATEは、JSONをサポートしています。 JSONに加えて、トランスポート・メカニズム(TCPソケットなど)を得ることができ、オプションでマルチスレッド環境にすることもできます。

Here JSON for windowsについての情報があります。

スレフトはマルチプラットフォームなので、VSでかなりうまく動作するはずです。

0

rapidjsonをお試しください。

VC2008/2010は、最小限の依存性(例:BOOST、STLさえありません)を基本に、小さく、高速で、ネイティブにサポートされています。

SAXまたはDOMスタイルAPIを使用してJSONを解析して生成できます。

0

Json11 - JSONの解析とシリアライズを提供する、C++ 11のための小さなJSONライブラリです。

ライブラリによって提供されるコアオブジェクトはjson11 :: Jsonです。 Jsonオブジェクトは、null、bool、数値(intまたはdouble)、文字列(std :: string)、配列(std :: vector)、またはオブジェクト(std :: map)のJSON値を表します。

Jsonオブジェクトは値のように動作します。それらは、割り当て、コピー、移動、等価または順序の比較などが可能です。ヘルパーメソッドJson :: dumpは、Jsonを文字列にシリアライズし、Json :: parse(静的)はstson :: stringをJsonオブジェクトとして解析します。

例:

 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 - 以下の特性を持つC++のための小さなJSONパーサ/シリアライザある:

  • ヘッダファイルのみ
  • ない外部依存関係(のみを使用標準C++ライブラリ)
  • STL-frendly(配列はrepr std ::ベクトルを用いてesented、オブジェクトは、STDである::マップ)
  • がプルインターフェイスとストリーミングの両方を提供する(イベントベース)界面

例:

 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; 
     } 

両方容易に視覚で使用標準ライブラリを持つスタジオ(追加の依存関係はありません)。