私はCでJSONを解析するための良い方法を見つけようとしています。私は本当に巨大なライブラリなどを必要としません。むしろ、最小限の機能を備えた小さくて軽量なものが欲しいのですが、優れたドキュメントです。
誰かが私に指摘できるものはありますか?
私はCでJSONを解析するための良い方法を見つけようとしています。私は本当に巨大なライブラリなどを必要としません。むしろ、最小限の機能を備えた小さくて軽量なものが欲しいのですが、優れたドキュメントです。
誰かが私に指摘できるものはありますか?
{
、[
、]
、}
、,
、"
、およびバックスラッシュを。彼らはUnicodeエスケープシーケンスをあなたに任せるかもしれないし、任せないかもしれないし、数字が許容されるUnicode範囲内にあるかどうかをチェックするのはあなたに任せるかもしれない、など。構造体。
回答:
Jsonはそもそも巨大な言語ではないので、そのためのライブラリは小さい可能性があります(少なくともXmlライブラリよりも)。
そこの全体トンCはJson.orgでリンクされたライブラリ。たぶんそれらの1つはあなたのためにうまくいくでしょう。
Jsmnは非常にミニマルで、使用できる関数は2つだけです。
/* Allows escaped symbol \uXXXX */
... case 'u':
.../* TODO */
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);
あなたはヤンソンを見ることができます
Webサイトには次のように記載されています。Janssonは、JSONデータをエンコード、デコード、および操作するためのCライブラリです。それは特徴です:
jsmn
その速度[1]のために使いたくなりましたが、エンコーディングをサポートしていません。さらに、ヤンソンは本当に使いやすいです。--- [1] translate.google.it/...
作業プロジェクトにJSON-Cを使用したので、それをお勧めします。軽量で、オープンライセンスでリリースされます。
ドキュメントはディストリビューションに含まれています。基本的に*_add
、JSONオブジェクトを作成する*_put
関数、それらのメモリを解放する同等の関数、およびタイプを変換してオブジェクトを文字列表現で出力するユーティリティ関数があります。
ライセンスにより、プロジェクトに含めることができます。このように使用し、JSON-Cをメインビルドにリンクされた静的ライブラリとしてコンパイルしました。そうすれば、依存関係について心配する必要はありません(Xcodeのインストール以外)。
JSON-Cも、OS X(x86 Intel)およびLinux(x86 Intel)で問題なくビルドされました。プロジェクトを移植可能にする必要がある場合、これは良いスタートです。
任意のJSON構造を解析する必要がありますか、それともアプリケーションに固有のデータのみを解析する必要がありますか。後者の場合、JSONキーを値にマッピングするハッシュテーブル/マップ構造を生成する必要がないため、はるかに軽量で効率的にすることができます。代わりに、データを構造体フィールドなどに直接保存することができます。