サーバーからJSONを逆シリアル化しようとしていますが、特定のキー/値が省略されることがあり、使用できませんでした:
var obj = JsonConvert.Deserialize<Obj>(respString);
私は JSON.net のドキュメントを読み、次のような Linq から JSON へのデシリアライゼーションを進めました。
string respString = await resp.Content.ReadAsStringAsync();
JObject json = JObject.Parse(respString);
...
CustomObject.child.primary_key = int.Parse(obj[i]["primary_key"].ToString());
CustomObject.foreign_key = obj[i]["foreign_key"].ToString();
CustomObject.properties = int.Parse(ojb[i]["properties"].ToString());
try //this is being done a few times throughout the loop
{
CustomObject.unreliableProperty = obj[i]["xxx"].ToString();
}
Catch { }
すべて正常に動作しますが、時々取得しますoutofmemoryexceptions
(サーバーからの JSON は非常に大きいです)。JsonConverter
JSON.net からカスタムを実装しようとしましたが、ネストされた階層 (3 レベルの深さ) では、JsonConverter
メンテナンスは言うまでもなく、複雑すぎて理解しにくくなります。
メモリ プロファイラーを実行すると、アプリケーションで OOM 例外が発生する原因となる 150 MB を超えるピークが見られました。ヒープ セクションの下で、メモリ割り当ての 30 ~ 40% がmscorlib
文字列割り当てのために行われていることがわかりました。もう 1 つの問題はループ中に発生し、GC が連続して発生していました。私は今書かれている方法に完全にうんざりしていますが、私は機知に富んでいます. 誰か助けてもらえますか?