没有为类型定义的无参数构造函数
我正在尝试学习和使用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