我需要在下面反序列化响应:
{
1: { 'a': 'anything', 'b': 987, ... },
2: { 'a': 'something', 'b': 123, ... }
}
我创建了一个MyClass,用于映射{' a':'任何'' b':987,...}中的所有属性并使用IDictionary尝试反序列化它。 Json.Net能够映射正确的密钥,但遗憾的是该值为空。
我无法控制json响应,所以我无法让Json.Net更容易。
我该怎么办?自定义转换器?
干杯, LD
答案 0 :(得分: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
答案 1 :(得分: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);
}
}