这看起来应该很容易,但是当我尝试 deserialize 时遇到了异常一些简单的 JSON 转换为托管类型。异常(exception)是:
MissingMethodException
No parameterless constructor defined for type of 'System.String'
虽然 System.String 确实没有无参数构造函数,但我不清楚为什么这很重要。
执行反序列化的代码是:
using System.Web.Script.Serialization;
private static JavaScriptSerializer serializer = new JavaScriptSerializer();
public static MyType Deserialize(string json)
{
return serializer.Deserialize<MyType>(json);
}
我的类型大致是:
public class MyType
{
public string id { get; set; }
public string type { get; set; }
public List<Double> location { get; set; }
public Address address { get; set; }
public Dictionary<string, string> localizedStrings { get; set; }
}
另一个类是一个地址:
public class Address
{
public string addressLine { get; set; }
public string suite { get; set; }
public string locality { get; set; }
public string subdivisionCode { get; set; }
public string postalCode { get; set; }
public string countryRegionCode { get; set; }
public string countryRegion { get; set; }
}
这是 JSON:
{
"id": "uniqueString",
"type": "Foo",
"location": [
47.6,
-122.3321
]
"address": {
"addressLine": "1000 Fourth Ave",
"suite": "en-us",
"locality": "Seattle",
"subdivisionCode": "WA",
"postalCode": "98104",
"countryRegionCode": "US",
"countryRegion": "United States"
},
"localizedStrings": {
"en-us": "Library",
"en-ES": "La Biblioteca"
}
}
即使我的 JSON 只是:
{
"id": "uniquestring"
}
谁能告诉我为什么 System.String 需要无参数构造函数?
最佳答案
无参数构造函数需要任何类型的反序列化。想象一下,您正在实现一个反序列化器。您需要:
关于c# - 在 JSON 反序列化期间没有为 'System.String' 类型定义无参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386929/
相关文章:
ajax - jquery mobile可折叠和galaxy tab 10.1 json响应给出随机
javascript - jQuery、AJAX、JSONP : how to actually s
javascript - 如何将输入文件对象序列化为 JSON?
c# - 如何在 WebAPI 后端 C# 上接收 JSON 数据?
python - datetime.date(2014, 4, 25) 在 Django 中不是 J
python - Django:使用 Javascript 在我的模板中解析 JSON