在反序列化包含JSON序列化LocalDate对象的JSON字符串时,我看到了一个异常(有关JSON片段,请参阅本问题末尾)。
这就是我反序列化的方式:
var settings = new JsonSerializerSettings();
settings.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);
var output = JsonConvert.DeserializeObject<MyObject>(json, settings);
我看到以下异常消息:
class MyObject
{
public LocalDate Date { get; set; }
public string AnotherProperty { get; set; }
}
下面是我试图反序列化的JSON片段:
{
"Date": {
"Calendar": {
"Id": "ISO",
"Name": "ISO",
"MinYear": -9998,
"MaxYear": 9999,
"Eras": [{
"Name": "BCE"
}, {
"Name": "CE"
}]
},
"Year": 2017,
"Month": 7,
"Day": 10,
"DayOfWeek": 1,
"YearOfEra": 2017,
"Era": {
"Name": "CE"
},
"DayOfYear": 191
},
"AnotherProperty": "A string"
}
我现在已经明白了--我的问题是我在ASP.NET路由处理程序中的错误假设。@L.B的问题其实让我多想了一点。
在本例中,我假设内置的JSON序列化程序正确地序列化了MyObject中的LocalDate:
[HttpGet("myobject")]
public MyObject GetMyObject()
{
return new MyObject()
{
Date = LocalDate.FromDateTime(DateTime.Now),
AnotherProperty = "A string"
};
}
这个API的结果将与问题中的JSON片段相同。
为了确保localdate
在每个处理程序中正确序列化,我在startup
类的configureReservices
方法中执行以下操作:
services.AddMvc().AddJsonOptions(options =>
{
// NodaConverters lives in the NodaTime.Serialization.JsonNet assembly
options.SerializerSettings.Converters.Add(NodaConverters.LocalDateConverter);
});
现在当我调用上述API时,localdate
被正确序列化,如下所示:
{
"Date":"2017-07-10",
"AnotherProperty":"A string"
}
这也是DeserializeObject所期望的格式。
试图在Java中使用protobuf反序列化消息,并得到以下异常。 原因:com.google.protobuf.InvalidProtocolBufferException:在解析协议消息时,输入意外地在字段中间结束。这可能意味着输入被截断,或者嵌入的消息错误报告了自己的长度。在com.google.protobuf.InvalidProtocolBufferException.Truncate
我正在用Spring Boot测试一个微服务架构,但是当Spring Session试图从redis反序列化会话时出现了一个异常。 体系结构如下: 雷迪斯 雷迪斯 网关 网关应用程序.yml 管理 我得到了以下堆栈跟踪。我注意到网关应用程序可以正确反序列化,但它在异常点使用DefaultListableBeanFactory。但Admin应用程序使用此StaticListableBeanFacto
问题内容: 我需要执行RestRequest并获取一些JSON,因此我不确定我的方法是否真正异步,因为使用此方法时,UI仍然有些冻结。 特别针对以下代码行: 真的不同步吗?因为它似乎阻塞了UI。您能告诉我如何使此函数正确异步吗? 问题答案: 似乎作为参数传递给的委托正在UI线程上执行。如果是这种情况,只需使用即可在线程池上运行委托。 是田野吗?在我看来,它应该是局部变量。另外,在反序列化json之
我正在尝试序列化然后反序列化多个对象。我可以毫无问题地写入文件,但当选择反序列化选项时,我会得到以下堆栈跟踪。以前,我可以成功地序列化和反序列化一个对象。
我反映了JSON.NET JavaScriptDateTimeConverter类代码,复制了它,并将该类重命名为3DateTimeConverter,以便修改它以更精确和强类型的庄园格式化DateTime对象。 我让它根据JSON.NET输出强类型对象的方式输出一个类型,如: 运行JsonConverter的重写WriteJson方法来生成该值。 但是,当我尝试使用与相同转换器完全相同的设置反序
我目前正在将一些代码从Jackson1.x迁移到Jackson2.5json映射器,遇到了一个1.x中没有的问题。 这是设置(参见下面的代码): 接口IPET 类Dog实现IPET IPET使用@jsonTypeInfo和@jsonSubtypes进行注释 类Human具有一个类型为IPet的属性,该属性使用@JSONSerialize(using=CustompetSerializer.clas