0

「success」プロパティにアクセスしてその値を取得しようとしています。現在、「オブジェクト参照がオブジェクトのインスタンスに設定されていません。」というキャッチがヒットしています。文字列値を取得するにはどうすればよいですか?

{"success":true、 "next": "/ locations"、 "amount":325、 "keys":3、 "credits":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);
        }
4

1 に答える 1

0

ストレートアップとしてデシリアライズしてい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
于 2013-02-13T04:36:55.277 に答える