0

IE 用のプロジェクトで JSON 形式のデータ解析を設定することになっています (排他的)。このライブラリについては知っていますが、データ転送は重大な問題になるため、移動するバイト数を最小限に抑えたいと考えています。

私が使用する JSON オブジェクトは非常に小さく、非常にフラットです。人間の言葉で言えば、最大 3 レベルの深さでおそらく 30 行です。

これにアプローチするより良い方法はありますか?正規表現は、解決するよりも多くの問題を引き起こす傾向があります。shabong などと呼ばれるノードに接続された値 (または値のセット) を選択する方法に関する他のアイデアはありますか?

私はXDocument、タグに含まれる一連の情報を取得するために子孫の名前を指定するだけでよい C# のクラスに慣れています。同様の解決策が望ましいでしょう。(古い犬、新しいトリック、へへ。)

4

1 に答える 1

1

データが安全であることが保証できる場合evalは、またはFunctionコンストラクターを使用してデータを解析できます。

これは、JSONデータの構造と値がJavaScriptのリテラル表記に非常によく似ているため、通常、データを実際のJavaScript式として評価することに頼ることができるためです。


使用eval

var parsed = eval("(" + myjsondata + ")");

使用Function

var parsed = (new Function("return " + myjsondata))();

繰り返しますが、これは、渡されるデータの整合性が完全に確実である場合にのみ発生します。プログラムの一部のように扱っているため、有効なデータの代わりに使用された悪意のあるコードが実行されます。

このFunctionバージョンは、グローバルスコープで呼び出されるという点でわずかなセキュリティを提供するため、悪意のあるコードはローカル変数にアクセスできません。これは全体的にほとんど快適さを提供しないはずです。


上記のソリューションとは別に、データのニーズに固有の独自のシリアル化をいつでも作成できます。データが十分に単純である場合、カスタムシリアル化用の非常に短く高速なパーサーを作成する機能を提供できます。

于 2012-11-27T15:02:52.477 に答える