2014-03-30 17 views
-1

我需要反序列化下面的響應:Json.Net反序列化的IDictionary <int,MyClass>

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

我創造出所有屬性映射在{ 'A' 一個MyClass的: '什麼', 'B':987。 ..}並使用IDictionary嘗試反序列化它。 Json.Net能夠映射正確的鍵,但不幸的是,這個值是空的。

我無法控制json響應,所以我無法讓Json.Net更容易。

我該怎麼辦?自定義轉換器?

乾杯, LD

+0

實際上它是Reshaper的重構。它使我的物業成爲私人設置。在重構之後,我沒有看到我的類定義。 – ldsenow

回答

0

這工作對我很好。下面是我在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 
0

不清楚是什麼問題。以下控制檯應用程序工作得很好:

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); 
    } 
}