Json.Net 反序列化IDictionary<int,MyClass>



>我需要反序列化下面的响应:

{
1: { 'a': 'anything', 'b': 987, ... },
2: { 'a': 'something', 'b': 123, ... }
}

我创建了一个MyClass,它映射了{'a': 'anything', 'b': 987, ... }中的所有属性,并使用IDictionary尝试反序列化它。 Json.Net 能够映射正确的键,但不幸的是该值为空。

我无法控制 json 响应,因此我无法使 Json.Net 更容易。

我该怎么做?定制转换器?

干杯劳工处

对我来说很好用。这是我在 LinqPad 中运行的代码:

void Main()
{
    var json = @"{ 1: { 'a': 'anything', 'b': 987, }, 2: { 'a': 'something', 'b': 123, } }";
    JsonConvert.DeserializeObject<IDictionary<int, MyClass>>(json).Dump();  
}
// Define other methods and classes here
class MyClass 
{
    public string A { get; set; }
    public int B { get; set; }
}

转储打印:

Dictionary<Int32,MyClass> (2 items)
Key Value 
1 MyClass4 
UserQuery+MyClass 
   A anything 
   B 987 
2 MyClass4 
UserQuery+MyClass 
    A something 
    B 123 

不清楚问题是什么。以下控制台应用程序工作正常:

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
public class MyClass
{
    public string A { get; set; }
    public int B { get; set; }
}
static class Program
{
    static void Main()
    {
        var json = @"
        {
            1: { ""a"": ""anything"", ""b"": 987 },
            2: { ""a"": ""something"", ""b"": 123 }
        }";
        var result = JsonConvert.DeserializeObject<IDictionary<int, MyClass>>(json);
        Console.WriteLine(result[2].A);
    }
}

相关内容

  • 没有找到相关文章

最新更新