创建一个de / serializing类

时间:2013-08-09 12:13:03

标签: c# json

我有一个JSON字符串,如:

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

我想设计一个相同的类;在C#中为JSON字符串创建类时如何处理?

3 个答案:

答案 0 :(得分:4)

如果您使用的是Visual Studio 2012,请进入菜单 EDIT - >选择性粘贴 - >将JSON粘贴为CLASES

你有效的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);

答案 1 :(得分: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

答案 2 :(得分:0)

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

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

How do I represent this complex json document as a C# object?