ServiceStack.Text序列化词典

ServiceStack.Text序列化词典,第1张

概述我使用Json.Net来序列化Dictionary类型的字典,当我向字典中添加整数或布尔值时,反序列化时我会得到整数和布尔值. 现在我试图更改我的代码以使用ServiceStack.Text,因为代码的其他部分中存在日期序列化的问题,但现在我在反序列化后得到了整数作为字符串的布尔值.有没有办法和Json.Net有相同的行为? 这是重现它的代码:https://gist.github.com/160 我使用Json.Net来序列化Dictionary类型的字典,当我向字典中添加整数或布尔值时,反序列化时我会得到整数和布尔值.
现在我试图更改我的代码以使用ServiceStack.Text,因为代码的其他部分中存在日期序列化的问题,但现在我在反序列化后得到了整数作为字符串的布尔值.有没有办法和Json.Net有相同的行为?

这是重现它的代码:https://gist.github.com/1608951
Test_JsonNet通过,但Test_ServiceStack_Text_TypeSerializer和Test_ServiceStack_Text_JsonSerializer都失败

解决方法 这是一个有目的的设计决策,没有为原始值类型发出类型信息,这就是为什么值保留为字符串.

您要么必须反序列化为包含类型信息的强类型POCO:

public class MixType{    public string a { get; set; }    public int b { get; set; }    public bool c{ get; set; }}var mixedMap = new Dictionary<string,object> {    { "a","text" },{ "b",32 },{ "c",false },};var Json = JsonSerializer.SerializetoString(mixedMap);Console.Writeline("JsON:\n" + Json);var mixedType = Json.FromJson<MixType>();Assert.AreEqual("text",mixedType.a);Assert.AreEqual(32,mixedType.b);Assert.AreEqual(false,mixedType.c);

或者反序列化为Dictionary< string,string>并自己解析为特定类型.

或者使用ServiceStack的动态API反序列化.有关如何执行此 *** 作的示例,请参见ServiceStack’s Dynamic JSON Test folder.

总结

以上是内存溢出为你收集整理的ServiceStack.Text序列化词典全部内容,希望文章能够帮你解决ServiceStack.Text序列化词典所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1069726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存