web-dev-qa-db-ja.com

Cを使用したJSONの解析

私はCでJSONを解析するための良い方法を見つけようとしています。私は本当に巨大なライブラリなどを必要としません。

誰かが私を指すことができる何かを持っていますか?

68
dshipper

Jsonはそもそも巨大な言語ではないので、Jsonのライブラリーは(少なくともXmlライブラリーよりも)小さい可能性があります。

たくさんの Json.orgでリンクされたCライブラリ があります。たぶんそのうちの1つがあなたのためにうまくいくでしょう。

64

cJSON には適切なAPIがあり、小さい(2ファイル、最大700行)。私が最初に見た他のJSONパーサーの多くは巨大でした...ただJSONを解析したいだけです。

編集:長年にわたってcJSONに 一部の改善 を加えました。

30
NateS

Jsmnは非常に最小限であり、使用する機能は2つだけです。

http://zserge.bitbucket.org/jsmn.html

10
Prabhpreet

NXJSON はフル機能でありながら非常に小さい(〜400行のコード)JSONパーサーで、使いやすいAPIを備えています。

const nx_json* json=nx_json_parse_utf8(code);
printf("hello=%s\n", nx_json_get(json, "hello")->text_value);
const nx_json* arr=nx_json_get(json, "my-array");
int i;
for (i=0; i<arr->length; i++) {
  const nx_json* item=nx_json_item(arr, i);
  printf("arr[%d]=(%d) %ld\n", i, (int)item->type, item->int_value);
}
nx_json_free(json);
9

Jansson を見ることができます

Webサイトには次のように記載されています。Janssonは、JSONデータのエンコード、デコード、および操作用のCライブラリです。機能:

  • シンプルで直感的なAPIおよびデータモデル
  • JSONへのエンコードとデコードの両方が可能
  • 包括的なドキュメント
  • 他のライブラリに依存しない
  • 完全なUnicodeサポート(UTF-8)
  • 広範なテストスイート
8
TantrajJa

作業プロジェクトに JSON-C を使用しましたが、推奨します。軽量で、オープンライセンスでリリースされます。

ドキュメントは配布物に含まれています。基本的に、JSONオブジェクトを作成する*_add関数、メモリを解放する同等の*_put関数、および型を変換して文字列表現のオブジェクトを出力するユーティリティ関数があります。

ライセンスにより、プロジェクトに含めることができます。この方法で使用し、JSON-Cをメインビルドにリンクされた静的ライブラリとしてコンパイルしました。そうすれば、依存関係を心配する必要がなくなります(Xcodeのインストール以外)。

JSON-Cは、OS X(x86 Intel)およびLinux(x86 Intel)でも問題なく構築されています。プロジェクトを移植可能にする必要がある場合、これは良い出発点です。

7
Alex Reynolds

任意のJSON構造、またはアプリケーション固有のデータのみを解析する必要がありますか。後者の場合、JSONキーを値にマッピングするハッシュテーブル/マップ構造を生成する必要がないため、はるかに軽量で効率的になります。代わりに、データを構造体フィールドなどに直接保存できます。

5
R..