Newsoft json反序列化密钥作为值

时间:2019-02-24 20:39:14

标签: c# json json-deserialization

我如何从json字符串反序列化键作为对象的值?

示例:

{"vals": {"foo":{"val":1}, "bar":{"val":1}}}

进入

public Bizz
{
   public IList<Buzz> vals;
}
public Buzz
{
  public string name;
  public int val;
}

其中的名称将包含foo/bar

2 个答案:

答案 0 :(得分:1)

您可以编写自定义的Json Converter,也可以稍微简化Json并使用Dictionary<>而不是Buzz。 Json是由您生成的吗?

要能够转换为Dictionary<>,Json应该看起来像

{"foo":"1", "bar":"1"}

答案 1 :(得分:1)

如先前的海报所述,它自然地将其序列化为字典,例如serialized,然后您可以执行以下操作:

var bizzes = new Bizz 
{
    vals = serialized
        .Select(kvp => new Buzz { name = kvp.Key, val = kvp.Value.val})
        .ToList()
}