1

私は数日間yajlで遊んでいて、ツリーノードモデルが本当に好きです. 解析が完了すると、json ファイルの構造が取得され、それを確認できます。ここの例のように:

http://lloyd.github.io/yajl/yajl-2.0.1/example_2parse_config_8c-example.html

この例は素晴らしく、理解しやすいですが、ここに示されているストリーミングの例の使用方法を知りたいです。 http://lloyd.github.io/yajl/yajl-2.0.1/reformatter_2json_reformat_8c-example.htmlこれは、私が想像する大きなファイルに適しています。

ストリーミングの例では、パーサーが特定のものに遭遇するたびにイベントを発生させます。ブール値に遭遇したときのように、ブール値が見つかったというイベントが発生し、ブール値が与えられます。ただし、ブール値がどのキーまたはオブジェクトに属しているかはわかりません。同様に、マップを閉じるイベントが発生します。そこで何ができますか?マップが閉じました。この yajl_gen ポインターを取得しましたが、それをどうすればよいかわかりません。この質問があいまいな場合、または yajl の解析について十分に知らない場合はお詫び申し上げます。読んでくれてありがとう。

4

1 に答える 1

0

基本的には、イベントごとにコールバックを作成し、それらのコールバックで徐々にデータ構造の階層を構築し、JSON ストリームに含まれるデータでそれらを埋めることができます。マップの開始/終了は JSON オブジェクトを構成します。ほとんどの場合、これら 2 つのイベントの間にあるものはすべて連想配列 (キーと値のペア) です。キーは文字列で、マップ キー イベントによってマークされます。値は、文字列、数値、ブール値、配列 (開始/終了配列イベント)、または別のオブジェクト (開始/終了マップ) である可能性があります。などなど。これらのそれぞれは、開始/終了配列イベント、文字列イベント、数値イベント、またはブール イベントなどの対応するイベントによってマークされます。JSON ストリームが処理されるにつれて、イベントは 1 つずつ徐々に発生し、必要なデータ構造の階層を構築することができます。

于 2014-05-08T21:33:44.797 に答える