JSON与无名'子字段到C#

时间:2016-06-27 16:30:44

标签: c# serialization json.net

我试图将使用JSON.NET的跟随JSON(我不控制源代码)反序列化为C#类或类失败。我该如何处理错误'领域。它似乎由一个整数和一个字符串组成,但这些子字段没有命名。

{
  "status": "error",
  "data": "this is a string",
  "error": {
    "123": "Something went wrong, fix it"
  }
}

这与我以前的question类似,但在这种情况下,数据'和'错误'不包含集合。

例如,这不起作用......

public class ApiError
{
    int Number;
    string Message;
};

public class ApiResponse
{
    [JsonProperty(PropertyName = "status")]
    public string Status;

    [JsonProperty(PropertyName = "data")]
    public string Data;

    [JsonProperty(PropertyName = "error")]
    public ApiError Error;
};

var y = JsonConvert.DeserializeObject<ApiResponse>(SampleJson);
// y.Error.Number and y.Error.Message are both 0/null.

1 个答案:

答案 0 :(得分:1)

C#中的字段/属性不能以数字开头。因此,在您的示例中,“error”的对象可以只是一个Dictionary。所有JSON最终都只是键/值对。

[JsonProperty(PropertyName = "error")]
public Dictionary<int, string> Errors;