tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
1144
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Impi2k Impi2k ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    51
    Hallo Community,
    ich versuche zur Zeit eine API zu nutzen, die mir ein in JSON codierten String zurückliefert, der wie folgt aussieht:
    Code :
    1
    
    {"list":[{"model.Object":{"id":1,"name":"das ist ein test","datum":{"@class":"sql-timestamp","$":"2011-01-20 14:02:52.0"},"aktiv":false}}]}

    Ich komme beim deserialisieren an zwei Stellen nicht weiter, die meiner Meinung nach aber den gleichen Ursprung haben. Und zwar kann ich ja keine Property namens "model.Object" erstellen, weil Umlaute (in diesem Falle der Punkt) nicht als Property-Name erlaubt sind. Gleiches Problem stellt sich beim Value des Keys "datum". Eine Property mit dem Namen "@class" und "$" - geht nicht. Jetzt habe ich gelesen, dass man mit DataMemberAttributen solche Probleme lösen kann (http://msdn.microsoft.com/de-de/libr...attribute.aspx). Allerdings bekomme ich das nicht zum Laufen, meine Klasse für "model.Object" würde so aussehen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    Imports System.Runtime.Serialization
    <DataContract()> _
    Public Class getResponseModelObject
        <DataMember(Name:="model.Object")> _
        Public Property modelObject() As getResponseObject()
            Get
                Return m_modelObject
            End Get
            Set(ByVal value As getResponseObject())
                m_modelObject= value
            End Set
        End Property
        Private m_modelObject As getResponseObject()
    End Class

    Leider funktioniert das nicht. :( Bin ich mit <DataMember(Name:="model.Object")> komplett auf dem Holzweg oder mache ich einfach nur etwas falsch? Ich würde mich freuen, wenn mir jemand bei meinem Problem helfen kann! Vielen Dank schon einmal.
     

  2. #2
    Avatar von RudolfG
    RudolfG RudolfG ist offline Mitglied Brokat
    Registriert seit
    Jul 2006
    Ort
    Gummersbach (NRW)
    Beiträge
    337
    Hi,

    gibt es einen Grund warum du deine Objekte/Listen etc. nicht über den JavaScriptSerializer aus dem .NET-Framework in JSON serializierst/deserialisierst, sondern es selber implementieren möchtest?

    Gruß
    RudolfG
     
    Technologien
    (Gute) Grundkenntnisse: HTML, CSS
    Fortgeschrittene-Kenntnisse: C++/Qt, C# (WinForms, Webservice), SQL

  3. #3
    Impi2k Impi2k ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    51
    Hallo RudolfG!

    Ich arbeite bereits mit JavaSriptSerializer:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
                Dim serializer As New JavaScriptSerializer()
                serializer.MaxJsonLength = data.Length
     
                Dim dataObject As getResponseList = serializer.Deserialize(Of getResponseList)(data)
                Dim objects As getResponseObject() = dataObject.list(0).modelObject
                Dim list As New List(Of getResponseObject)
                For Each obj As getResponseObject In objects
                    list.Add(obj)
                Next
                Me.DataGridView1.DataSource = list
     

  4. #4
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Ich habe mich noch nie mit dem JavaScriptSerializer beschäftigt. Wenn mein Beitrag daher unqualifiziert ist, dann bitte einfach ignorieren
    Aber MSDN sagt mir:
    Um Typen zu serialisieren und zu deserialisieren, für die keine systemeigene Unterstützung durch JavaScriptSerializer besteht, implementieren Sie mithilfe der JavaScriptConverter-Klasse benutzerdefinierte Konverter. Registrieren Sie die Konverter dann mit der RegisterConverters-Methode.
    Hast du dir den JavaScriptConverter mal angeschaut?
     
    hihi = -h²

  5. #5
    Impi2k Impi2k ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Beiträge
    51
    Nein, die kannte ich noch nicht. Schaue mir mal an, ob das für meine Zwecke ausreicht. Vielen Dank schon mal an der Stelle!
     

  6. #6
    tequila slammer tequila slammer ist offline Mitglied Gold
    Registriert seit
    Aug 2006
    Beiträge
    204
    Je nach der verwendeten Framework Version kannst du auch den JsonSerializer verwenden.ich glaube ab 3.5 ist er mit dabei. An Sonaten Suche mal nach .Net Json, da wirst du ein eine ganze Menge zu finden.
     

Ähnliche Themen

  1. json for..in
    Von ano1486 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 28.08.10, 16:28
  2. [jQuery] + JSON +PHP
    Von mgraf im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 18.05.10, 11:01
  3. json aktivieren!?
    Von Marky-1 im Forum Hosting & Webserver
    Antworten: 2
    Letzter Beitrag: 17.04.09, 20:16
  4. JSON Dekodierung
    Von serializable im Forum PHP
    Antworten: 2
    Letzter Beitrag: 26.07.08, 16:00
  5. Deserialization von string bzw xml daten
    Von Trivalik im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 26.01.05, 12:41