Results 1 to 3 of 3

Thread: Interpreteren JSON array in PostGIS JSON

  1. #1
    NLDelphi.User.Registered Oibibi's Avatar
    Join Date
    Jun 2003
    Location
    Zoetermeer
    Posts
    47

    Question Interpreteren JSON array in PostGIS JSON

    PostGIS is een extensie van PostgreSQL, waarmee geografische gegevens kunnen worden verwerkt. Eén van de methoden om geometrische gegevens uit de database te halen is de functie ST_ASGEOJSON, deze zet de geometrische waarde om in JSON. Tot zover duidelijk.
    Nou ben ik niet zo'n held met JSON en ik weet niet hoe ik dit resultaat nu moet interpreteren. Voorbeeld:

    {"type":"MultiPoint","coordinates":[[4.369041,51.1400411],[4.369303,51.1398982],[4.3699144,51.1395965],[4.3716096,51.1387786]]}

    Duidelijk is dat het een TJSONObject met daarin de paren "MultiPoint" en "coordinates", waarvan de laatste weer een TJSONArray is.
    Alleen hoe lees ik nou de waarden uit het TJSONArray "coordinates"?

    Alvast bedankt!

  2. #2
    Stijn Sanders develyoy's Avatar
    Join Date
    Jun 2008
    Location
    GentBrugge, Belgi?½
    Posts
    1,046
    Omdat ik zelf iets met JSON moest doen, en een voorstander ben van Variant's, heb ik zelf een JSON parserr gemaakt die intens van Variants gebruikt maakt:
    https://github.com/stijnsanders/jsondoc#jsonDoc

    Met jouw voorbeeld (als je bovenstaande string in x zitten hebt) gewoon met x['coordinates'] een Variant array geven van 4 lang, met telkens een Variant array in van 2 lang

  3. #3
    NLDelphi.User.Registered Oibibi's Avatar
    Join Date
    Jun 2003
    Location
    Zoetermeer
    Posts
    47
    Dank je Stijn. Ik heb het intussen opgelost met standaard Delphi door gewoon eindeloos te proberen, want dit specifieke voorbeeld is nergens te vinden.
    Als je de uiteindelijke code ziet, dan is het de eenvoud zelve, maar kom er maar eens op.
    Ik heb dit gedaan:
    Code:
    jAr := jObj.GetValue('coordinates') as TJSONarray;
    for nArTeller := 0 to jAr.Count - 1 do
    begin
      jAr2 := jAr.Items[nArTeller] as TJSONarray;
      nPointLat  := StrToFloatDef(jAr2.Items[0].ToString, 0.0);
      nPointLong := StrToFloatDef(jAr2.Items[1].ToString, 0.0);

Thread Information

Users Browsing this Thread

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

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
  •