Results 1 to 5 of 5

Thread: Van JSON naar TDataSet met TRESTResponseDataSetAdapter

Hybrid View

  1. #1
    Senior Member
    Join Date
    Jul 2008
    Location
    Ertvelde, Belgi?½
    Posts
    158

    Van JSON naar TDataSet met TRESTResponseDataSetAdapter

    Het is al een tijdje geleden dat ik hier nog eens een vraag heb gesteld, maar deze keer heb ik zelf al veel te veel zitten proberen in code  Zelf ben ik nog altijd van mening dat je misschien verkeerd bezig bent als je teveel code schrijft en dus kom ik hier even met mijn probleem aankloppen.

    Het zit zo  Ik probeer met Delphi XE5 een REST API aan te spreken, wat perfect lukt. De TRESTClient, TRESTRequest en TRESTResponse componenten helpen hier enorm. De REST API geeft wat JSON data terug in the TRESTResponse die er als volgt uit ziet :

    Code:
      "modules":
      [
            {
          "_id":"02:00:00:02:38:70",
          "last_event_stored":1384801280,
          "main_device":"70:ee:50:02:58:14",
          "module_name":"Buitenmodule",
          "type":"NAModule1",
          "firmware":38,
          "last_message":1384867781,
          "last_seen":1384867762,
          "rf_status":87,
          "battery_vp":6178,
          "data_type":
          [
            "Temperature",
            "Humidity"
          ]
        }
    ,
        
        {
          "_id":"02:00:00:01:6e:da",
          "last_alarm_stored":1384565382,
          "last_event_stored":1382223157,
          "main_device":"70:ee:50:01:6a:82",
          "module_name":"Outdoor",
          "type":"NAModule1",
          "firmware":37,
          "last_message":1384867310,
          "last_seen":1384867271,
          "rf_status":86,
          "battery_vp":5874,
          "data_type":
          [
            "Temperature",
            "Humidity"
          ]
        }
      ]
    Nu wil ik heel graag die data in een DataSet krijgen (TClientDataSet) en gooide ik dus snel een TRESTResponseDataSetAdapter op mijn datamodule, en klaar is kees. Inderdaad  het werkt  voor een deel 

    Het is immers zo dat bv het veld data_type volgens mij niet correct verwerkt wordt. Het gaat hier immers om een soort array en in mijn data_type veld zie ik niks van data staan. Ik vermoed dat de standaard verwerking er niet echt mee overweg kan en dus het veld overslaat.

    Bijkomend is bv last_seen een Unix TimeStamp en zou ik dat graag zien als een TDateTime natuurlijk, want dat oogt mooier dan een nummertje. Ook hier krijg ik dat totaal niet goed.

    Ik heb ondertussen al van alles geprobeerd, maar niets blijkt te werken. Ik dacht ook om de TRESTResponseDataSetAdapter aan te passen, maar ook hier blijkt dat bijna onmogelijk te zijn.

    Hebben jullie toevallig een idee hoe ik dit kan oplossen? Of misschien bestaat er wel een work-around om van mijn JSON een dataset te maken met de nodige velden en de correcte waarden in de juiste velden.

    Suggesties zijn dus meer dan welkom.


    Groeten,


    Stefaan

  2. #2
    ik zou die json eens door een json parser gooien.

    Als datatype een array zou zijn, dan moeten de veldsetjes volgens mij ook tussen accolades staan.

    Ik vraag me dus af of dit een array is of iets anders.

  3. #3
    Senior Member
    Join Date
    Jul 2008
    Location
    Ertvelde, Belgi?½
    Posts
    158
    Hm, een array of een set ? Het is volgens mij 1 van de 2. Als ik al die inhoud via die TRESTResponseDataSetAdapter gewoon in een veld kon krijgen  dan was ik al blij :-)

  4. #4
    Ik geloof niet dat JSON sets kent. Volgens mij is het een array, maar als je dit plat wilt slaan in een clientdataset, dan heb je daarin een veld nodig van een array-type. Misschien dat dat niet kan, of dat daar het probleem zit.

    De vraag is ook of de data er echt niet in staat, of dat het misschien de weergave is die niet lukt. Vergelijk het bijvoorbeeld met een memo-veld waarvan in een standaard DBGrid ook niet de inhoud wordt weergegeven.
    1+1=b

  5. #5
    Senior Member
    Join Date
    Jul 2008
    Location
    Ertvelde, Belgi?½
    Posts
    158
    Wel, ik dacht ook dat het een Array was hoor. Ik probeer deze avond eens uit om te zien of de data er al dan niet in zit. Volgens mij niet hoor, want volgens mij maakt die TRESTResponseDataSetAdapter er automatisch String velden van.

    Ik had ook al geprobeerd een ftArray veld aan te maken, maar daar faalt de TRESTResponseDataSetAdapter dan ook weer op.

    Misschien morgen op BeDelphi eens voorleggen aan een aantal aanwezigen :-)

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •