JSON.NET を使用した一部の JSON の逆シリアル化
-
11-09-2019 - |
質問
私は JSON を初めて使用するため、API が提供するものを解析する必要があります。グーグルで簡単に検索してみたら出てきた JSON.NET, ので、今それを使用してこの JSON をリスト オブジェクトに解析しようとしています。初めに、 JSON.NET は使用するのに最適なライブラリですか このために?
これが私がやろうとしていることです:私は持っています アイテムというクラス, 、 例えば。JSON には多くの「要素」 (そう呼ばれる場合) があり、それぞれ 3つのフィールドが含まれています:id という名前の整数、name という名前の文字列、creationTime という名前の日時。これらすべての項目「要素」をjsonから解析したいと考えています。 アイテムオブジェクトのリストに. 。JSON に一致するように、Item クラスに 3 つのフィールドを作成しました。JSON.NET を使用してこれを行うにはどうすればよいでしょうか?
私はもう試した:
List<Item> fav = (List<Item>)new JsonSerializer().Deserialize(new JsonReader((TextReader)new StreamReader(response.GetResponseStream())));
しかし、うまくいかないようです。キャスト エラーが発生します。リスト エンクロージャに処理できないだけですが、JSON を 1 つの項目クラスに処理できるかどうかさえわかりません (JSON.NET は十分に文書化されていませんが、明日は徹底的にデバッグする予定です)。
JSON.NET で解析する方法を説明するサンプル コードをいくつか教えていただけますか?
ありがとう!
アップデート: ところで、言い忘れていましたが、私のプロジェクトは .NET Framework 2.0 をターゲットにする予定なので、JSON.NET のレガシー バージョンを使用しています。1.3.1.最小限のシステム要件を損なう一方で、プロジェクトを .NET 3.5 に変換する価値がある大きな利点はありますか?
更新 #2: JSON.NET の代わりに System.Web.Extensions.dll の JavascriptSerializer クラスを使用することにしました。それに関する質問が投稿されています。 ここ. 。ありがとう!
解決
.net Framework 3.5 にアップグレードし、ASP.Net MVC を使用して json サービスを構築することをお勧めします。見る:
他のヒント
この質問は約 3 年前のものであることは承知していますが、JSON ベースの API を構築したい場合は、NancyFx が素晴らしいということだけ付け加えておきたいと思います。 http://nancyfx.org/
編集:リクエストに応じた例ですが、非常に簡単です。開始するには、Nancyfx asp パッケージを NuGet 経由で Web プロジェクトに追加するだけです。(サブパス上の既存のアプリに追加する場合は、web.config に場所を追加する必要があります。それ以外の場合は、そのまま使用できます)
using Nancy;
using Nancy.ModelBinding;
public class Api : NancyModule
{
public Api()
{
Get["/api/order/create"] = x =>
{
var order = this.Bind<Order>(); //xml/json negotiated based on content header
var result = ... // Do stuff here
return Response.AsJson(result);
};
}
}