1

我正在将一个 vb 项目转换为 c#;
一切都很好,除了这一行:

information = DirectCast(jsonserializer.Deserialize(jsonString, GetType(List(Of formData))), List(Of formData))

我创建了一个和vb一样的类(formData),json字符串和vb一样。

    public class formData
{
    private string part;
    private string key;
    private string val;
    public formData(string part, string key, string val)
    {
        this.part = part;
        this.key = key;
        this.val = val;
    }

    public string Part
    {
        get { return part; }
        set { part = value; }
    }

    public string Key
    {
        get { return key; }
        set { key = value; }
    }

    public string Value
    {
        get { return val; }
        set { val = value; }
    }
}

我该怎么办?
我必须使用“ http://json.codeplex.com/ ”?

4

1 回答 1

1

Directcast在 VB 中与在 C# 中强制类型转换相同。

所以,我相信你的代码看起来像这样:

var jsonserializer = new JavaScriptSerializer();
var information = jsonserializer.Deserialize(jsonString, typeof(List<formData>)) as List<formData>;

或者

var jsonserializer = new JavaScriptSerializer();
var information = (List<formData>)jsonserializer.Deserialize(jsonString, typeof(List<formData>));

两者之间的区别在于,如果强制转换失败,前者将返回 null,而后者将抛出异常。这里有一个关于强制类型转换和asSO 之间的很好的讨论:

类型转换和'as'转换之间的区别

于 2013-10-31T14:37:17.133 回答