2016-05-31 3 views
0

繰り返しコードがいくつかのネストされた構造に基づいて巨大なJSONを生成していると仮定します。 1つの悪い日に悪いデータがあるとし、新しいJSONのサイズが最後の良いJSONのサイズより30%小さいとします。2 JSONs - プロパティcount-c#

私の目標は、JSONを逆シリアル化している間にすべての主要なプロパティを数え、それを過去のカウントの統計値と比較し、新しいJSONが悪いことをJSONプロデューサに通知することです。

これを行う簡単な方法はありますか?デシリアライズのためにC#とNewtonSoft.Jsonを使用する。

例:JSONがn-arrayツリーのような構造をカプセル化しているとします。各ノードには、文字列としてのsourceフィールドが含まれます(nullでもかまいません)。今では、最初の実行で100ノードがJSONに存在し、その70%が有効なsource文字列を含んでいます。 2回目の実行では、有効なノードの80%が有効な105ノード(source文字列)(GOODデータ)でした。 3回目の実行では、有効なsource文字列の20%を持つ40のノードがありました。私はこれを「悪い」データと考えています。私は新しい悪いデータを摂取することなくここで失敗したい。

繰り返しコードを実行するたびに、前回のカウント統計と比較して、例に示すようにデータが不良であればコードを失敗させたいと考えています。

+1

「悪い」JSONが「良い」JSONとどのように見えるかの例を挙げることができますか? –

+0

例を追加しました。 – Prakhar

+1

質問を閉じると、実際の世界の問題のように見えますが、データを更新しています。 – Prakhar

答えて

0

あなたが記述していることは、ビジネスロジックであり、シリアライザが気にするものは何もありません。

デシリアライズとデシリアライズされたデータの処理の間に検証ステップを追加することをお勧めします。

これは、バリデータが非直列化POCOクラスを反復処理し、有効なsource文字列を持つノードの数を数えます。それらが特定のしきい値を下回っている場合は、実行を停止し、JSONプロデューサに通知する必要があります。

スレッシュホールドを動的にする(つまり前のカウントに依存する)場合は、カウントされた値をファイルまたはデータベースに保存して、次のJSONが届くとその値を取得する必要があります。

関連する問題