C# C.Net 4.0+是否有任何JSON序列化程序可以将JSON序列化为Dictionary和dynamic[]
我知道您可以将JSON序列化为Dictionary和object[],但问题是它需要您不断地在各个地方转换内容:C# C.Net 4.0+是否有任何JSON序列化程序可以将JSON序列化为Dictionary和dynamic[],c#,.net,json,c#-4.0,dynamic,C#,.net,Json,C# 4.0,Dynamic,我知道您可以将JSON序列化为Dictionary和object[],但问题是它需要您不断地在各个地方转换内容: using System.Web.Script.Serialization; var json = new JavaScriptSerializer { }.DeserializeObject(@"{array:['item1','item2']}") as Dictionary<string, object>; var strings = new List<st
using System.Web.Script.Serialization;
var json = new JavaScriptSerializer { }.DeserializeObject(@"{array:['item1','item2']}") as Dictionary<string, object>;
var strings = new List<string> { };
if (json != null)
{
var array = json["array"] as object[];
if (array != null)
{
foreach (var item in array.Select(i=>i as string))
{
if (!string.IsNullOrWhiteSpace(item))
{
strings.Add(item);
}
}
}
}
return strings.ToArray();
我宁愿做一些更像:
try
{
var json = new JavaScriptSerializer { }.DeserializeDynamic(@"{array:['item1','item2']}") as Dictionary<string, dynamic>;
var strings = new List<string>{};
foreach (var item in json["array"])
strings.Add(item as string);
return strings.ToArray();
}
catch { return null; }
我遇到了对象[]和数字类型的问题,我不确定它是int、float、decimal还是double等。我无法清理json数据,因此它只能可靠地作为double
是否有任何用于.Net 4.0的JSON序列化程序输出字典和动态[]?对于使用json来说,这是一个更自然的选择,而字典和对象[…]。就运行时而言,字典和字典是相同的类型
例如,这项工作:
var dynDic =new Dictionary<string,object>{ {"test", 1}}
as Dictionary<string,dynamic>;
int value = dynDic["test"];
不使用动态调用,因此无论项目变量是对象还是动态,它都会编译相同的内容。因此,如果您遇到问题,我猜是在使用动态
同样的规则适用于对象[]和动态[],它们是相同的类型,您可以在它们之间自由转换,当您转换时,您只是告诉编译器如何使用该数组中的对象
dynamic[] dynArr = new object[]{1};
因此,答案是任何将反序列化到Dictionary或object[]的内容都可以用作Dictionary或dynamic[]
var json = new JavaScriptSerializer { }
.DeserializeDynamic(@"{array:['item1','item2']}")
as Dictionary<string, dynamic>;
foreach (var item in json["array"])
strings.Add(item as string);
dynamic[] dynArr = new object[]{1};