我有一个 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 的有用类
你也可以阅读这个类似的问题(在发布之前搜索并没有真正伤害):