从c#中的json响应中获取对象属性值

本文关键字:获取 取对象 属性 响应 中的 json | 更新日期: 2023-09-27 17:58:49

我正在尝试访问"success"属性以获取其值。现在,它碰到了一个陷阱,说"对象引用没有设置为对象的实例。"我如何获得字符串值?

{"success":true,"next":"/locations","amount":325,"keys":3,"学分":6185}

 private static void postComplete(object sender, UploadStringCompletedEventArgs e)
    {
        object result = JsonConvert.DeserializeObject<object>(e.Result);
        try{
            PropertyInfo pi = result.GetType().GetProperty("success");
            String success = (String)(pi.GetValue(result, null));
            Console.Write(success);
        } 
        catch (Exception f) {
            Console.Write(f);
        }

从c#中的json响应中获取对象属性值

您正在将其反序列化为一个直接的object。。object没有名为success的属性。

另一种选择是键入一个表示以下内容的类:

class ExampleClass {
    public bool success { get; set; }
    public string next { get; set; }
    public int amount { get; set; }
    public int keys { get; set; }
    public int credits { get; set; }
}

然后这样称呼它:

object result = JsonConvert.DeserializeObject<ExampleClass>(e.Result);
//                                            ^^^^^^^^^^^^
//                                                This
    try{
        PropertyInfo pi = result.GetType().GetProperty("success");
        bool success = (bool)(pi.GetValue(result, null));
        Console.Write(success); // True
    } 
    catch (Exception f) {
        Console.Write(f);
    }

甚至更好。。完全删除:

ExampleClass example = JsonConvert.DeserializeObject<ExampleClass>(e.Result);
Console.WriteLine(example.success); // True