Erkennen, wenn die deserialisierte Objekt fehlt, ist ein Feld mit der Klasse in JsonConvert Json.NET

Ich versuche zu Deserialisieren einige JSON-Objekte mit Json.NET. Ich habe festgestellt, jedoch, dass, wenn ich ein Objekt Deserialisieren, die nicht den Eigenschaften ich bin auf der Suche nach, dass kein Fehler ausgegeben wird, aber ein default-Wert zurückgegeben, für die Eigenschaften, wenn ich auf Sie zugreifen. Es ist wichtig, dass ich in der Lage bin, zu erkennen, Wann habe ich deserialisiert die falsche Art von Objekt. Beispiel-code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace Json_Fail_Test
{
    class Program
    {
        [JsonObject(MemberSerialization.OptOut)]
        private class MyJsonObjView
        {
            [JsonProperty("MyJsonInt")]
            public int MyJsonInt { get; set; }
        }

        const string correctData = @"
        {
            'MyJsonInt': 42
        }";

        const string wrongData = @"
        {
            'SomeOtherProperty': 'fbe8c20b'
        }";

        static void Main(string[] args)
        {
            var goodObj = JsonConvert.DeserializeObject<MyJsonObjView>(correctData);
            System.Console.Out.WriteLine(goodObj.MyJsonInt.ToString());

            var badObj = JsonConvert.DeserializeObject<MyJsonObjView>(wrongData);
            System.Console.Out.WriteLine(badObj.MyJsonInt.ToString());
        }
    }
}

Die Ausgabe dieses Programms ist:
42
0

Ich würde lieber eine exception geworfen werden nicht schweigend. Kurz gibt es eine Möglichkeit zu erkennen, ob die Serialisierung nicht einen parameter?

Ich weiß, ich kann die Daten analysieren mit einem Json-Objekt und überprüfen Sie, ob der parameter mit key value lookup-aber die Codebasis, die ich in verwendet die Muster vor, und ich möchte zu halten, konsistent, wenn es möglich ist.

InformationsquelleAutor DubiousPusher | 2014-01-09

Schreibe einen Kommentar