0

外部ソースから大量のフィールドを持つ json を取得します。私はそれらのほとんどを気にしません。それらの「いくつか」が必要なだけです。(異なる子レベルにあります)。

したがって、「強いタイプ」のオブジェクトは必要ないと思います。試してみました:

JavaScriptSerializer js = new JavaScriptSerializer();
var obj = jss.Deserialize(myJson);

しかし、私はそれを行うことができないようですか?どうすればいいですか?

使用:

jss.Deserialize<dynamic>(objectText);

LINQ を使用してフィールドを検索できないよりも...

4

3 に答える 3

6

JSON.Netを使用すると、定義したオブジェクトに逆シリアル化できます。定義するオブジェクトは部分一致のみです。はDeserializeObject<>、他のすべての JSON フィールドを無視します。

たとえば、JSON:

{
    Cat: "Tom",
    Mouse: "Jerry",
    Duck: "Donald"
}

これを使用して:

public class LooneyTunes
{
    public string Cat { get; set; }
    public string Mouse { get; set; }
}

var looneyTunes = JsonConvert.DeserializeObject<LooneyTunes>(json);

これにより、プロパティが無視されDuck、残りが正しく逆シリアル化されます。したがって、この手法を使用すると、JSON メッセージのどの部分に関心があるかを選択できます。

于 2013-07-16T08:34:46.797 に答える
2

Newtonsoft Json.NETを使用してみてください。動的な JObject があり、LINQ でクエリできるサブ値のリストであれば、ほとんど何でも解釈できます。

于 2013-07-16T08:33:34.207 に答える
0

クラスを作成し、不要なフィールドを省略できます。

しかし、(デ)シリアライゼーションをより細かく制御できるクラスを用意することをお勧めします。

既に示唆したように、JSON.NET はこの種のタスクに最適なライブラリの 1 つです。

json をオブジェクトに逆シリアル化し、値を取得する方法を示す以下のリンクを確認してください。

https://stackoverflow.com/a/5502317/309395

于 2013-07-16T08:41:17.953 に答える