-2

我有一个 JSON 字符串,如:

var json = "{\"Attributes\": {\"name\":\"S1\", \"quantity\":\"100\"}}";

我想为此设计一个课程;在 C# 中为 JSON 字符串创建类时,一种方法如何?

4

3 回答 3

4

如果您使用的是 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);
于 2013-08-09T12:18:33.613 回答
0

您的问题不清楚,但我认为您的意思是将 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
于 2013-08-09T12:22:14.637 回答
0

看看命名空间System.Runtime.Serialization,你可以在那里找到用于(反)序列化 JSON 的有用类

你也可以阅读这个类似的问题(在发布之前搜索并没有真正伤害):

如何将这个复杂的 json 文档表示为 C# 对象?

于 2013-08-09T12:22:39.567 回答