Laden...

DataContractJsonSerialzer Problem

Erstellt von rollerueckwaerts vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.351 Views
R
rollerueckwaerts Themenstarter:in
57 Beiträge seit 2010
vor 11 Jahren
DataContractJsonSerialzer Problem

Hallo,

ich versuche seit einigen Stunden verweifelt einen JsonString in ein Objekt zu wandeln und bekomme immer den Fehler "kann nicht in Typ result umgewandelt werden"
Kann mir aber nicht erklären woran es liegt ....

mein Objekt:
{"id":"iphone","result":[
{"kontaktid":"2","typ":"\u00c4rzte (niedergel/stat.)","nachname":"Meyer","vorname":"Sabine"},
{"kontaktid":"3","typ":"\u00c4rzteorganisationen","nachname":"Gabor","vorname":"Uli"}
],"error":null}

    [DataContract]
          public class result
        {
                   [DataMember]
                  private string _kontakttyp;
                  public string typ
                 {
                     get { return _kontakttyp; }
                     set { _kontakttyp = value; }
                  }
        }

c#:

readedString = jsonrpc.response;
                    MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(readedString));

                    Type[] knownTypes = new Type[] { typeof(result) };
                    DataContractJsonSerializer serializer =
                    new DataContractJsonSerializer(typeof( knownTypes);

                    List<result> res = (List<result>)serializer.ReadObject(ms);

Wäre supi wenn sich jemand opfert und da mal kurz rauf schaut, bin mittlerweile völlig am verweifeln.

Lieben Dank schon jetzt

296 Beiträge seit 2007
vor 11 Jahren

Hallo rollerueckwaerts,

auf der Seite json2csharp kannst du dir Klassen zu einem Json-Objekt generieren lassen. Die Ergebnisse sind dort meistens ganz vernünftig:


public class Result
{
    public string kontaktid { get; set; }
    public string typ { get; set; }
    public string nachname { get; set; }
    public string vorname { get; set; }
}

public class RootObject
{
    public string id { get; set; }
    public List<Result> result { get; set; }
    public object error { get; set; }
}

Was man im Json-String nicht direkt sieht, wird dann sofort klar: In deinem Rootobjekt steckt also mehr als nur eine Liste von Results.

Kann mir denken, dass der (De-)serializer da nicht drauf klarkommt.

Beim object error könnte er danach auch noch Probleme machen... zur Not rauslöschen bzw. den Typ ersetzen.

Grüße