反序列化JSON并将它们转换为C#对象

时间:2011-02-02 07:10:42

标签: c# json serialization

我有一个silverlight Web应用程序。在这个应用程序中,我使用WebClient类调用JSP页面。现在,JSP以JSON格式返回响应

{
 "results":[{"Value":"1","Name":"Advertising"},
 {"Value":"2","Name":"Automotive Expenses"},{"Value":"3","Name":"Business Miscellaneous"}]
}

以上响应已分配给我的Stream对象。

我有一个c#class CategoryType

public class CategoryType
{
 public string Value{get;set;}
 public string Name{get;set;}
}

我的目标是将响应转换为Collection<CategoryType>并在我的C#代码中使用它

截至目前,我正在尝试使用DataContractJSONSerialiser。但不确定是否有一种简单而有效的方法来做到这一点。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

它的JSON并将其转换为对象,您需要将其反序列化为对象。 Microsoft和第三方提供了许多工具。

你似乎走得很对。

我使用过JavascriptSerializer。在此处查看其用途http://shekhar-pro.blogspot.com/2011/01/serializing-and-deserializing-data-from.html

或者使用一个很棒的库JSON.Net,甚至在微软发布这些库之前就已经广泛使用了。{/ p>

<强>更新

正如您在评论中提到的,您希望将其转换为Collection,您可以这样做:

创建数组类来表示项目数组。

public class CategoryTypeColl
{
     public CategoryType[] results {get;set;}
}

并在您的代码中

Collection<CategoryType> ctcoll = new Collection<CategoryType>();
JavaScriptSerializer jsr = new  JavaScriptSerializer();
CategoryTpeColl ctl = jsr.Deserialize<CategoryTypeColl>(/*your JSON String*/);
List<CategoryType> collection = (from item in ctl.results
                                select item).ToList();
//If you have implemented Icollection then you can use yourcollection and Add items in a foreach loop.