>我需要反序列化下面的响应:
{
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);
}
}