Converteer JSON String naar C# Object
Ik probeer een JSON string om te zetten in een object in C#. Met behulp van een heel eenvoudige test case:
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
object routes_list = json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
Het probleem is dat routes_list nooit ingesteld wordt; het'is een ongedefinieerd object. Iemand een idee?
174
3
Het lijkt erop dat je probeert te deserialiseren naar een ruw object. Je zou een Class kunnen maken die het object vertegenwoordigt waarnaar je're converteert. Dit zou het nuttigst zijn in gevallen waar je te maken hebt met grotere objecten of JSON Strings.
Bijvoorbeeld:
Dan zou je deserialisatie code zijn:
Meer informatie kan gevonden worden in deze tutorial: http://www.codeproject.com/Tips/79435/Deserialize-JSON-with-Csharp.aspx
Je wilt waarschijnlijk niet zomaar routes_list declareren als een
object
type. Het heeft geen .test eigenschap, dus je gaat echt geen mooi object terug krijgen. Dit is een van die plaatsen waar u beter af zou zijn met het definiëren van een klasse of een struct, of gebruik maken van het dynamische sleutelwoord.Als je echt wilt dat deze code werkt zoals je hem hebt, moet je'weten dat het object teruggegeven door DeserializeObject een generisch woordenboek van string,object is. Hier's de code om het op die manier te doen:
Als je het dynamische sleutelwoord wilt gebruiken, je kunt hier lezen hoe.
Als je een klasse of struct declareert, kun je Deserialize aanroepen in plaats van DeserializeObject, zoals hier:
Hier's een eenvoudige klasse die ik uit verschillende berichten heb samengesteld.... Het'is ongeveer 15 minuten getest, maar lijkt te werken voor mijn doeleinden. Het gebruikt
JavascriptSerializer
om het werk te doen, waarnaar verwezen kan worden in uw app met behulp van de gedetailleerde info in deze post.De onderstaande code kan in LinqPad worden uitgevoerd om het uit te testen door:
Ik hoop dat het helpt!