Komplexe Objekte an Server nur als JSON String?

  • 4 Antworten
  • Letztes Antwortdatum
GENiALi

GENiALi

Fortgeschrittenes Mitglied
11
Hallo

Ich versuche krampfhaft eine Liste mit komplexen Objekten an einen REST Service zu übermitteln. Die einzige Lösung die ich finde ist immer, dass man ein JSON String daraus ersellt und diese dem NameValuePair übergibt. Das alles via POST. Muss man dann tatsächlich auf der Serverseite die Methodensignatur auf string anpassen und das JSON deserialisieren? Ich wollte das bequemerweise dem WCF überlassen.

Oder wie übermittelt ihr eine komplexes Objekt, z.b. eine Person mit den Eigenschaften Name, Vorname, Alter und einer Liste von Adress Objekten?
 
hast du es schonmal mit xml versucht?

EDIT: Bzw. bin ich mir ziemlich sicher das du es damit machen kannst/musst/darfst :D
 
So langsam aber sicher glaube ich nicht mehr dass das Problem auf Seiten Android zu suchen ist. Viel mehr WCF. Ich habe eine WCF Lösung gefunden, die gefällt mir aber gar nicht. Absolut nicht.
Code:
public List<StammdatenUpdate> RecordsUpdate(StammdatenType type, string listWithHashes)
{
 HashList list = JsonDeserialize<HashList>(listWithHashes);

 switch (type)
 {
  case StammdatenType.Client:
   return PITServiceApplication.GetDao<StammdatenDao>().ReadClientList(list);
  default:
   return new List<StammdatenUpdate>();
 }
}

public static T JsonDeserialize<T>(string jsonString)
{
 T obj = Activator.CreateInstance<T>();
 using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonString)))
 {
  DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
  obj = (T)ser.ReadObject(ms);
 }
 return obj;
}
Das ich den JSON string selber deserialisieren muss ist nicht schön.
 
Welche Alternativen stellst du dir denn vor? JSON ist für den Datentransport erfunden worden und eigentlich ein ganz schicke Sache. XML ist nicht viel anders nur viel geschwätziger, was die Daten künstlich vergrößert. So lange dir keine direkten Socket- oder anderweitige Verbindungen zur Verfügung stehen und du HTTP nutzt sind das die gängigsten möglichkeiten.... und JSON ist viel einfacher als es erst aussieht. Du kannst das umwandeln von Object in JSON sogar generisch machen, es gibt ein kleines Framework dafür, du kannst das hier benutzen und er macht so einiges automatisch: https://github.com/ko5tik/jsonserializer
 
Unbestritten ist JSON einfach. .NET (Microsoft) WCF REST und JSON harmonieren nur nicht wirklich gut zusammen. Ich stolpere im Momment von Problem zu Problem, und das nur weils MS nicht so macht, denke ich, wies von den Erfindern von JSON angedacht wurde.
 
Zurück
Oben Unten