在ASP.NET中不能用反序列化JSON填充列表
本文关键字:反序列化 JSON 填充 列表 不能 ASP NET | 更新日期: 2023-09-27 18:08:40
我正在用ASP编写一个应用程序。NET MVC 4和我尝试填充列表内的对象我的类型。我编写控制台应用程序只是为了尝试以下代码:
using (var webClient = new WebClient())
{
var json = webClient.DownloadString(URL);
var myTypeVariable= new JavaScriptSerializer().Deserialize<MyTypeSummary>(json);
return myTypeVariable;
}
myTypeVariable是类型为:
的对象public class MyTypeSummary
{
public int Id { get; set; }
public List<MyType> MyTypeItems{ get; set; }
public DateTime PublicationDate { get; set; }
}
不幸的是,当我在ASP中使用此代码时。. NET Index()操作只正确填充了DateTime属性。MyTypeItems列表仍然为空,这与在控制台应用程序中执行此操作的效果正好相反(列表已正确填充)。
我的类是这样的:
public class MyType
{
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public int Unit { get; set; }
public double Price1{ get; set; }
public double Price2{ get; set; }
public double Price3{ get; set; }
}
我不明白为什么在控制台应用程序这工作得很好,而在asp不工作。有人能帮忙吗?编辑:这是json字符串我得到:
"{'"publicationDate'":'"2016-09-23T11:36:26.4723947Z'",'"items'":[{'"name'":'"US Dollar'",'"code'":'"USD'",'"unit'":1,'"purchasePrice'":3.6682,'"sellPrice'":3.6779,'"averagePrice'":3.6730},{'"name'":'"Euro'",'"code'":'"EUR'",'"unit'":1,'"purchasePrice'":3.8842,'"sellPrice'":3.9027,'"averagePrice'":3.8935},{'"name'":'"Swiss Franc'",'"code'":'"CHF'",'"unit'":1,'"purchasePrice'":3.7940,'"sellPrice'":3.8041,'"averagePrice'":3.7990},{'"name'":'"Russian ruble'",'"code'":'"RUB'",'"unit'":100,'"purchasePrice'":6.8865,'"sellPrice'":6.9096,'"averagePrice'":6.8981},{'"name'":'"Czech koruna'",'"code'":'"CZK'",'"unit'":100,'"purchasePrice'":13.9250,'"sellPrice'":13.9584,'"averagePrice'":13.9417},{'"name'":'"Pound sterling'",'"code'":'"GBP'",'"unit'":1,'"purchasePrice'":5.6786,'"sellPrice'":5.6989,'"averagePrice'":5.6887}]}"
根据您提供的JSON,您的类应该是这样的。您可以尝试在Json2Csharp将JSON转换为对象。
public class Item
{
public string name { get; set; }
public string code { get; set; }
public int unit { get; set; }
public double purchasePrice { get; set; }
public double sellPrice { get; set; }
public double averagePrice { get; set; }
}
public class MyTypeSummary
{
public string publicationDate { get; set; }
public List<Item> items { get; set; }
}
.Deserialize<MyTypeSummary>
如@stephen-muecke所说。
我个人使用NuGet包管理器安装NewtonSoft。Json’,然后使用:
JsonConvert.DeserializeObject<MyTypeSummary>(json);
在这里找到