这个JSON:
{
"Values": {
"Category": "2",
"Name": "Test",
"Description": "Testing",
"Expression": "[Total Items] * 100"
}
}
正在使用JsConfig.ConvertObjectTypesIntoStringDictionary = true;
public class MyDto {
public Dictionary<string, object> Values { get; set; }
}
出乎意料的是,Expression属性被反序列化为List<object>
而不是string
(参见屏幕截图)。
似乎解析器看到了开括号,并试图将该值解释为数组。是否有某种方法可以解决这个问题&#34;类型检测&#34;关闭或解决问题(不改变DTO)?
我正在使用ServiceStack v3.9.71。
答案 0 :(得分:1)
Json.NET能够将您的示例JSON反序列化为DTO类的实例。您正在使用的JSON解析库似乎是错误的。你能切换吗?
internal class Program
{
private static void Main()
{
const string json = @"{
""Values"": {
""Category"": ""2"",
""Name"": ""Test"",
""Description"": ""Testing"",
""Expression"": ""[Total Items] * 100""
}
}";
var myDto = JsonConvert.DeserializeObject<MyDto>(json);
}
}
public class MyDto
{
public Dictionary<string, object> Values
{
get;
set;
}
}
编辑:
我将我的代码切换为使用NuGet的ServiceStack.Text,我能够使序列化完美地运行:
var myDto = JsonSerializer.DeserializeFromString<MyDto>(json);