Jest sobie struktura heretycka struktura JSON która zamiast tablicy ma listę obiektów. Problematyczny fragment jest w następującym stylu:
{
"normalny_wpis": "który_poddaje_się_deserializacji_bez_problemów",
"irytująca_lista" : {
"001" : {
"foo": "bar"
},
"002" : {
"foo": "bar"
},
......}
}
Wszystkie wpisy w tej liście obiektów mają takie same pola, ich nazwa jest na tyle losowa że nie pozwala na przeszukiwanie w stylu brute force.
I tu mam problem że nie mam pojęcia jak to zdeserialozować ( oraz jaką wystukać klasę żeby się dało ).
Kod do deserializacji znaleziony na StackOverflow, wszystko działa lecz wrzucam w razie czego.
public static T Deserialise<T>(string json)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
obj = (T)serializer.ReadObject(ms);
return obj;
}
}
Alternatywnie mogę przeszukiwać to ręcznie w stylu:
System.Xml.XmlDictionaryReader r = System.Runtime.Serialization.Json.JsonReaderWriterFactory.CreateJsonReader(chunks[n].data, System.Xml.XmlDictionaryReaderQuotas.Max);
while (!r.EOF)
{
r.Read();
xx=r.Name;
yy=r.Value;
zz=r.NodeType;
}
r.Close();
I jechać klucz po kluczu a wynik końcowy byłby w tej samej klasie do której chciałem deserializować tyle że zapakowany ręcznie.
Ewentualnie być leniwym i zapakować to w tabelkę [path][name][value] i poszczuć to skrawkiem Linq'a by znaleźć mojego triforca.
A więc proszę o sugestie gdyż zamiast robić program utknąłem na takim małym badziewiu.