次のような JSON 文字列があります。
var json = "{\"Attributes\": {\"name\":\"S1\", \"quantity\":\"100\"}}";
同じクラスを設計したい。C# で JSON 文字列のクラスを作成するときにどのようにアプローチしますか?
Visual Studio 2012 を使用している場合は、メニューでEDIT -> Paste Special -> Paste JSON As Classesに移動します。
有効な JSON はおそらく次のようになります (\
クリップボードにコピーする前に削除する必要があります)。
{"Attributes": {"name":"S1", "quantity":"100"}}
生成されたクラス:
public class Rootobject
{
public Attributes Attributes { get; set; }
}
public class Attributes
{
public string name { get; set; }
public string quantity { get; set; }
}
\
使用例 (有効なコード構文を使用するために、 がまだここにあることに注意してください):
var json = "{\"Attributes\": {\"name\":\"S1\", \"quantity\":\"100\"}}";
var json_serializer = new JavaScriptSerializer();
Rootobject dc = json_serializer.Deserialize<Rootobject>(json);
あなたの質問は不明ですが、JSON を C# オブジェクトに解析することを意味していると思いますか? JSON.NET と次のようなものを使用すると、次のことが可能になります。
public class Attributes
{
[JsonProperty("name")]
public String Name { get; set; }
[JsonProperty("quantity")]
public Int32 Quantity { get; set; }
}
public class MyObject
{
[JsonProperty("Attributes")]
public Attributes Attributes { get; set; }
}
var myObj = JsonConvert.DeserializeObject<MyObject>(json);
または、より広範に行って、JSON.NET に任せることもできます。
var obj = JsonConvert.DeserializeObject<dynamic>(
"{ \"Attributes\": {\"name\":\"S1\", \"quantity\":\"100\"}}"
);
Console.WriteLine(obj.Attributes["name"]) // S1
Console.WriteLine(obj.Attributes["quantity"]) // 100
名前空間を見てみると、System.Runtime.Serialization
JSON をシリアル化 (逆) するための便利なクラスが見つかります。
また、この同様の質問を読むこともできます(投稿する前に検索しても問題はありません):