4

.NET 4.0 用の JSON パーサーはありますか?


理想的には次のようなものです:

String jsonText = GetTheJsonFromTheInternet();
var json = JsonValue.Parse(jsonText);

そして今、キーと値のペアのネストされたセットがあります。

JSON.net を使用する

私が望んでいないのは、JSON に一致するオブジェクトのセットを作成する必要があることです。JSON のデシリアライズではなく、JSON の解析について質問します。JSON の構造がわからないので、ふりをすることができます。

XML を解析する方法に似ています。

String xmlText = GetTheXmlFromTheInternet();
XmlDocument doc = new XmlDocument();
doc.LoadXml(XmlText);

そして今、名前-値-属性のネストされたセットがあります。XML DOM ツリーを表すオブジェクトは作成しません。XML の文字列を解析すると、ナビゲートして物事を見つけるのが簡単になります。

JsonValue.Parse() を使用しないのはなぜですか?

なぜなら:

  • JsonValue (System.Json.dllにあります) は、.NET Framework 4.5 まで使用できませんでした。
  • また、Visual Studio 2010 は .NET Framework 4.5 をターゲットにすることはできません。(Visual Studio 2012 のみ)
  • Visual Studio 2012 には Windows 8 が必要です

また、独自の JSON パーサーを作成するには、(正しく適切な状態になるまでに) 数日かかります。

私はJSON.netのドキュメントを見てきました。JSON 解析をサポートしているかどうかはわかりません。

4

1 に答える 1

5

を使用しNewtonsoft.Json.JsonConvert.DeserializeObjectます。JObjectまたはのいずれかを返しますJArray。それらに対してすべての Linq トリックを使用できます。

JsonConvert.DeserializeObjectの結果を割り当ててdynamicダックタイピングを使用することもできます

いくつかの例:

String jsonText = 
    @"{
        ""files"":[{
            ""url"":""http://us.battle.net/auction-data/x/auctions.json"",
            ""lastModified"":1369051860000
        }]
    }";

JToken data = JObject.Parse(jsonText);

String url = (String)data["files"][0]["url"];
Int64 lastModified = (Int64)data["files"][0]["lastModified"];
于 2013-05-20T15:25:27.527 に答える