将一个Json字符串转换为C#类对象

21 浏览
0 Comments

将一个Json字符串转换为C#类对象

我有一个json字符串,如{field:'DateToEnd',dir:'asc'}

我有一个C#类,有以下两个属性。

public class SortDescriptor
{
    public SortDescriptor()
    {
    }
    public string Field { get; set; }
    public string Dir { get; set; }
}

现在我想将这个字符串转换为类对象,以便我可以访问这些属性。

我尝试了以下示例。但是对我来说不起作用。

JavaScriptSerializer serialize = new JavaScriptSerializer();
SortDescriptor sort = (SortDescriptor)serialize.DeserializeObject(fixSortString);

它给出以下错误:

无法将类型为 'System.Collections.Generic.Dictionary`2[System.String,System.Object]' 的对象强制转换为类型 'NF.Common.SortDescriptor'。

有人能告诉我如何做到这一点吗?

0
0 Comments

问题出现的原因是因为使用`DeserializeObject`方法需要一个类型参数来确定要将JSON字符串转换成哪种类型的对象。在上述代码中,使用了`SortDescriptor`作为类型参数来创建一个对象。

解决这个问题有两种方法:

1. 第一种方法是在`DeserializeObject`方法中使用类型参数。例如,可以使用以下代码:

JavaScriptSerializer serialize = new JavaScriptSerializer(); 
   SortDescriptor sort = (SortDescriptor)serialize.DeserializeObject<SortDescriptor>(fixSortString);
   

这样,`DeserializeObject`方法将会将JSON字符串转换成`SortDescriptor`类型的对象。

2. 第二种方法是在`DeserializeObject`方法中使用`typeof`来指定类型。例如,可以使用以下代码:

JavaScriptSerializer serialize = new JavaScriptSerializer();
   SortDescriptor sort = (SortDescriptor)serialize.DeserializeObject(fixSortString, typeof(SortDescriptor));
   

这样,`DeserializeObject`方法将会将JSON字符串转换成`SortDescriptor`类型的对象。

通过以上两种方法,可以将JSON字符串转换成对应的C#类对象。

0