反序列化一维JSON数组C#

反序列化一维JSON数组C#,c#,arrays,json,serialization,deserialization,C#,Arrays,Json,Serialization,Deserialization,假设以下为多个一维JSON数组: { "F" : [ "FG3D2", "FG492", "FG4Q2", "FG562", "FG5Y2", "FG6C2" ], "M" : [ "MG3D2", "MG492", "MG4Q2", "MG562", "MG5Y2", "MG6C2" ], "N" : [ "NG3D2", "NG492", "NG4Q2", "NG562", "NG5Y2", "NG6C2" ], "P" : [ "PG3D2", "PG492

假设以下为多个
一维
JSON数组:

{
    "F" : [ "FG3D2", "FG492", "FG4Q2", "FG562", "FG5Y2", "FG6C2" ],
    "M" : [ "MG3D2", "MG492", "MG4Q2", "MG562", "MG5Y2", "MG6C2" ],
    "N" : [ "NG3D2", "NG492", "NG4Q2", "NG562", "NG5Y2", "NG6C2" ],
    "P" : [ "PG3D2", "PG492", "PG4Q2", "PG562", "PG5Y2", "PG6C2" ]
}
可以使用什么样的类设计来反序列化它?当反序列化为
Dictionary
时,使用JSON.Net和JavascriptSerializer()进行反序列化是可行的,但我似乎找不到与之等效的适当类

下面是我尝试以反序列化为基础的类设计,但失败了:

public class Element
{
    public string Key { get; set; }
    public List<string> Value { get; set; }
}
公共类元素
{
公共字符串密钥{get;set;}
公共列表值{get;set;}
}

谢谢。

我想您可以创建一个从字典继承的类:

public class Element : Dictionary<string, List<string>>
{ }
公共类元素:字典
{ }

您确实需要更改json。就目前情况而言,你需要一门类似的课程

public class Element
{
    public List<string> F {get; set;}
    public List<string> M {get; set;}
    ....
}

对我来说,这比您目前拥有的更有意义

您必须更改JSON才能使其正常工作。您必须列出键/值对:

[
    {
        "Key": "F",
        "Value": [ "FG3D2", "FG492", "FG4Q2", "FG562", "FG5Y2", "FG6C2" ]
    },
    {
        "Key": "M",
        "Value": [ "MG3D2", "MG492", "MG4Q2", "MG562", "MG5Y2", "MG6C2" ]        
    },
    {
        "Key": "N",
        "Value": [ "NG3D2", "NG492", "NG4Q2", "NG562", "NG5Y2", "NG6C2" ]
    },
    {
        "Key": "P",
        "Value": [ "PG3D2", "PG492", "PG4Q2", "PG562", "PG5Y2", "PG6C2" ]
    }
]
然后,您可以按如下方式对其进行转换:

var result = JsonConvert.DeserializeObject<List<RootObject>>(json);
这个怎么样:

    var dic = JsonDeserializer<Dictionary<string, List<string>>>(json);

    var els = new List<Element>();
    foreach(var k in dic.Keys)
    {
        els.Add(new Element { Key = k, Value = dic[k] });
    }
var-dic=JsonDeserializer(json);
var els=新列表();
foreach(dic.键中的变量k)
{
添加(新元素{Key=k,Value=dic[k]});
}

现在您有了所需的对象。

您需要更改json,您需要
{Key:“F”,Value:[]}
但是如何对齐它以便类适应json?与json适应class.Btw不同,这是一个有助于json到POCO生成的工具:。虽然不完美,但对于实验来说还是不错的。你能把你的评论转换成答案吗?你真的救了我一天。这和他说他不想要的东西基本上是一样的吗?虽然这很有意义,但json值是在一个单独的api上预处理的,我对此没有任何控制权。这就是为什么,我在寻找一种方法,我的类将是一个适应。这是好的,所以你想要第一个选项,然后缺点是,你必须迭代的结果,这显然是不是很有效。你是对的。但我认为没有办法直接将json转换为所需的json。它们基本上是两个不同的物体。
class RootObject
{
    public string Key { get; set; }
    public List<string> Value { get; set; }
}
    var dic = JsonDeserializer<Dictionary<string, List<string>>>(json);

    var els = new List<Element>();
    foreach(var k in dic.Keys)
    {
        els.Add(new Element { Key = k, Value = dic[k] });
    }