web-dev-qa-db-ja.com

ANSICでJSONを解析する

JSONでエンコードされたデータをC構造体に読み込みたいのですが。 jsonデータの構造は事前にわかっており、比較的フラットで、いくつかのC structtypedefによって模倣されています。第3レベル程度の配列には、一度に1つずつ処理する必要のあるJSONオブジェクトの非常に長いリストが含まれています。

コードは非常に制約のあるシステムで実行することを目的としているため、ライブラリは動的にメモリを割り当てるべきではありません。

CrockfordのJSONライブラリのリスト があることは知っていますが、どちらが上記の問題に最適かはよくわかりません。

17
artistoex

jsmn libを試してください。2つのmallocだけで任意のjsonファイルを解析できるのが大好きです。

jsmnは、JSONデータ形式を解析するための最小限のライブラリです。小規模なプロジェクトで簡単に使用することも、組み込みシステムに統合することもできます。

jsmnは、次の理由から適切な選択です。

  • c89コンパイラバージョンと互換性があります
  • 動的メモリ割り当てを使用しません
  • オーバーヘッドが可能な限り最小です
  • jSONデータを解析するために必要なパスは1つだけです
  • libcでさえ、依存関係はありません
  • MITライセンスで配布されているため、独自のプロジェクトで使用できます
20
jimon

試してみてください json-c は最も一般的なものの1つであり、オープンソースであり、Windows(Win32)でも動作します。

JSON-Cは、CでJSONオブジェクトを簡単に構築し、JSON形式の文字列として出力し、JSON形式の文字列を解析してJSONオブジェクトのC表現に戻すことができる参照カウントオブジェクトモデルを実装しています。

4
aleroot