没有为类型定义的无参数构造函数

我正在尝试学习和使用asp.net进行一些操作。 我试图从json api中使用import.io的api获取一些信息,但我无法弄清楚什么。 我试图解决它,直到2天:

错误: 没有为'imdb_io_web.IMDB []'类型定义的无参数构造函数

为什么我得到那个我真的不明白的错误?

我有一堂课

namespace imdb_io_web
{
    public class IMDB
    {
        public string director { get; set; } 
    }
}

并尝试从IMDB获取导演名称

var wc = new WebClient();
        var serializer = new JavaScriptSerializer();
        var result = serializer.Deserialize<IMDB[]>(wc.DownloadString("MYAPI"));
        foreach (var item in result) { Label1.Text = item.director; }

[MissingMethodException:没有为'imdb_io_web.IMDB []'类型定义的无参数构造函数。] System.Web.Script.Serialization.ObjectConverter.ConvertDictionaryToObject(IDictionary`2 dictionary,Type type,JavaScriptSerializer serializer,Boolean throwOnError,Object&convertedObject)+527729 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o,Type type,JavaScriptSerializer serializer,Boolean throwOnError,Object&convertedObject)+66 System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o,Type type,JavaScriptSerializer serializer,布尔值throwOnError,Object&convertedObject)+145 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer序列化程序,字符串输入,类型类型,Int32 depthLimit)+66 System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(String input)+在C: Users ahmetozsari documents visual studio 2010 Proje中的70 imdb_io_web.WebForm1.Page_Load(Object sender,EventArgs e) cts imdb_io_web imdb_io_web WebForm1.aspx.cs:26 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)+51 System.Web.UI.Control.OnLoad(EventArgs e)+92 System.Web。 UI.Control.LoadRecursive()+54 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+772


要么反序列化一个元素:

 var result = serializer.Deserialize<IMDB>(wc.DownloadString("MYAPI"));
 Label1.Text = item.director;

或一个列表

 var result = serializer.Deserialize<List<IMDB>>(wc.DownloadString("MYAPI"));
 foreach (var item in result) { Label1.Text = item.director; }

在异常中读取时,数组类型( IMDB[] )不能用作解串器的类型参数,因为它缺少无参数构造函数。 使用List<IMDB>应该可以解决问题。


首先,您可以使用HttpClient类进行API操作。

 using (var httpClient = new HttpClient())
            {
                var operationResult = await httpClient.GetStringAsync(@"http://localhost/api/requests");

            }

其次,对于JSON转换操作,您可以使用Json.NET

using Newtonsoft.Json;

public class RequestJson
{
    [JsonProperty("request")]
    public Request Request { get; set; }
}

public class Request
{
    [JsonProperty("name")]
    public string Name{ get; set; }

}

JsonConvert.DeserializeObject<List<RequestJson>>(operationResult );

你必须使用List模板类型,因为在我创建数组类型的时候,因为它需要一个大小,所以Newtonsoft.Json将无法实例化对象。

链接地址: http://www.djcxy.com/p/27987.html

上一篇: No parameterless constructor defined for type

下一篇: DataAccessLayer threw an exception