Json.NET可以反序列化"动态"属性?

时间:2014-05-13 16:43:38

标签: c# json

我的C#服务正在使用"模糊"从外部服务接收对象。格式如下:

{
  "member": {
      "<dynamicProperty>": {
          "value":"some_string",
          "score": 10
      }
}

此属性&#34;&#34;可以针对每个对象进行更改,但我没有针对其可能值进行定义和限制的列表,当然我无法更改此格式。

有人知道Json.NET或其他一些Json .NET序列化程序是否可以帮助我并允许我定义下面的MemberDynamicProperty类,我可以使用它来进行简单的反序列化?< / p>

class Member
{
    [JsonProperty(PropertyName= "??")] // what should I put here?
    public DynamicProperty { get; set; }
}

class DynamicProperty
{
    public string value;
    public int score;
}

由于

2 个答案:

答案 0 :(得分:6)

您可以使用Dictionary<string, object>

class Member
{
     public Dictionary<string, object> { get; set; }
}

或者,您可以使用JsonExtensionData属性:

class Member
{
     [JsonExtensionData]
     public Dictionary<string, JToken> { get; set; }
}

答案 1 :(得分:0)

我是这样做的。像这样输入数据:

O(N Log²N)

这是上面Yuval示例中的类:

var data1 = JsonConvert.DeserializeObject<JSONX>(readJSON); 

像这样拉出键和值:

class recordxy
{
[JsonExtensionData]
public Dictionary<string, object> DataItems { get; set; }
}