Deserializacja obiektu o nieznanym typie

Deserializacja obiektu o nieznanym typie
ZS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 47
0

Witam,
Moja metoda przyjmuje jsona i musi wypisać na ekranie, jakiego typu jest serializowany objekt. Niestety poniższe rozwiązanie nie działa. Nigdy nie wchodzi do żadnego ifa:

Kopiuj
public void CheckType(string json)
        {
            object deserializedList = JsonConvert.DeserializeObject(json);

            if (deserializedList is List<int>)
                Console.WriteLine("Lista z intami");
            if (deserializedList is List<string>)
                Console.WriteLine("Lista z stringami");
        }
BO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 214
0

A pokażesz przykładowego jsona?

UR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 360
1

A ten zdeserializowany obiekt nie jest przypadkiem typu JArray dla kolekcji i JObject dla pojedynczych obiektów?

Nie chce mi się aprawdzac.

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

Hejka nie wiem, czy CI to w czymś pomoże, typ jaki posiada tak zdeserializowany obiekt to JArray. Metodką GetType() możesz uzyskać pewne informacje.

Kopiuj
var x= "[	{color: \"red\",value: \"#f00\"	},	{color: \"green\","+
		"value: \"#0f0\"	},{	color: \"blue\",value: \"#00f\"	},	{color: \"cyan\",value: \"#0ff\"}]";

			CheckType(x);
            void CheckType(string json)
            {
                object deserializedList = JsonConvert.DeserializeObject(json);
                Console.WriteLine(deserializedList.GetType().Name);//JArray
                if(deserializedList is Newtonsoft.Json.Linq.JArray) //tu wejdzie
                    Console.WriteLine("Lista");
                if (deserializedList is List<int>)
                    Console.WriteLine("Lista z intami");
                if (deserializedList is List<string>)
                    Console.WriteLine("Lista z stringami");

                //wyswietli "Lista"
            }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.