无法访问返回的JSON对象中的属性

时间:2017-03-27 08:05:33

标签: c# json

这个json对我来说真的很奇怪,我无法访问其中的属性(StudentIdCourseId)。我不是那个设计它的人。

如何使用C#正确访问它们?

{
  "Result": [
    "Done",
    {
      "StudentId": 45,
      "CourseId": 27
    }
  ]
}

我也尝试检查json2csharp,但我得到了这个结果:

public class RootObject
{
    public List<object> Result { get; set; }
}

1 个答案:

答案 0 :(得分:0)

您可以将列表项定义为dynamic

 public class RootObject
 {
     public List<dynamic> Result { get; set; }
 }

然后直接访问所需的属性。但在这种情况下,你必须检查它们是否存在(例如使用try...catch):

var json = @"{
    ""Result"": [
    ""Done"",
    {
        ""StudentId"": 45,
        ""CourseId"": 27
    }
    ]
}";

var rootObject = JsonConvert.DeserializeObject<RootObject>(json);

foreach (var res in rootObject.Result)
    if (res is string)
        Console.WriteLine(rootObject.Result[0]);
    else
        try
        { 
            Console.WriteLine(res.StudentId);
        }
        catch
        {
            // Unexpected element type
        }