C# 反序列化newtonsoft属性的动态对象名称

C# 反序列化newtonsoft属性的动态对象名称,c#,json,json.net,deserialization,C#,Json,Json.net,Deserialization,当我发送对某个API的请求时,它们会返回一个json,这非常棒,但问题是,根据我提供的参数,对象名称总是不同的,而数据结构保持不变。因此,我尝试使用Newtonsoft库将json转换为C#类。我发现实现这一点的唯一方法是使用JsonTextReader,但我想知道是否有更干净的方法来实现这一点,我查阅了文档,在这方面找不到任何帮助。我还尝试使用JValue.Parse进行动态对象映射,但是由于属性名总是不同的,所以对我没有帮助。 下面是一个代码示例来说明问题: { "error": [],

当我发送对某个API的请求时,它们会返回一个json,这非常棒,但问题是,根据我提供的参数,对象名称总是不同的,而数据结构保持不变。因此,我尝试使用Newtonsoft库将json转换为C#类。我发现实现这一点的唯一方法是使用JsonTextReader,但我想知道是否有更干净的方法来实现这一点,我查阅了文档,在这方面找不到任何帮助。我还尝试使用JValue.Parse进行动态对象映射,但是由于属性名总是不同的,所以对我没有帮助。 下面是一个代码示例来说明问题:

{
"error": [],
  "result": {
    //This property name always changes
    "changingPropertyName": [
      [
        "456.69900",
        "0.03196000",
        1461780019.8014,
      ]]
    }

//C# mapping
public partial class Data
{
    [JsonProperty("error")]
    public object[] Error { get; set; }

    [JsonProperty("result")]
    public Result Result { get; set; }
}

public class Result
{
    [JsonProperty("changingPropertyName")]
    public object[][] changingPropertyName{ get; set; }
}

您可以使用以下命令将其反序列化为c#动态:

dynamic dynamicObj= JsonConvert.DeserializeObject<dynamic>(jsonResultString);
dynamicObj=JsonConvert.DeserializeObject(jsonResultString);

您可以使用以下方法将其反序列化为c动态:

dynamic dynamicObj= JsonConvert.DeserializeObject<dynamic>(jsonResultString);
dynamicObj=JsonConvert.DeserializeObject(jsonResultString);

处理变量属性名称的一种方法是使用
字典
代替强类型类(其中
T
是您试图捕获的变量属性的类型)。例如:

public partial class Data
{
    [JsonProperty("error")]
    public object[] Error { get; set; }

    [JsonProperty("result")]
    public Dictionary<string, object[][]> Result { get; set; }
}

Fiddle:

处理变量属性名称的一种方法是使用
字典
代替强类型类(其中
T
是您试图捕获的变量属性的类型)。例如:

public partial class Data
{
    [JsonProperty("error")]
    public object[] Error { get; set; }

    [JsonProperty("result")]
    public Dictionary<string, object[][]> Result { get; set; }
}

Fiddle:

您不能使用属性执行此操作。你必须编写一个自定义转换器或类似的东西。你不能用属性来实现这一点。您必须编写一个自定义转换器或类似的东西;很高兴你发现它有用。没问题;很高兴你发现它有用。