Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to parse 4 GB json or XML file
Message
 
To
10/11/2022 17:42:04
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01685297
Message ID:
01685300
Views:
70
Likes (1)
Hi,

Are two ways:
- VFPA 10.1 can works with files greather 2GiB
- use API: CreateFile(), ReadFile(), CloseHandle()

MartinaJ

>3 GB json file contains array of objects in form
>
>
    [
>        {
>            "ariregistri_kood":16372442,
>            "nimi":"000 Holdings OÜ",
>            "yldandmed":{
>                "ettevotteregistri_nr":null,
>                "esmaregistreerimise_kpv":"23.11.2021",
>                "kustutamise_kpv":null,
>                "staatus":"R",
>                "staatus_tekstina":"Registrisse kantud",
>                "piirkond":5,
>                "piirkond_tekstina":"Tartu",
>                "piirkond_tekstina_pikk":"Tartu Maakohtu registriosakond",
>                "evks_registreeritud":null,
>                "evks_registreeritud_kande_kpv":null,
>                "oiguslik_vorm":"OÜ",
>                "oiguslik_vorm_nr":5,
>                "oiguslik_vorm_tekstina":"Osaühing",
>                "oigusliku_vormi_alaliik":null,
>                "oigusliku_vormi_alaliik_tekstina":"",
>                "asutatud_sissemakset_tegemata":true,
>                "loobunud_vorminouetest":null,
>                "on_raamatupidamiskohustuslane":false,
>                "tegutseb":null,
>                "tegutseb_tekstina":"Jah",
>                "staatused":[
>                    {
>                        "kaardi_piirkond":5,
>                        "kaardi_nr":1,
>                        "kaardi_tyyp":"R",
>                        "kande_nr":1,
>                        "staatus":"R",
>                        "staatus_tekstina":"Registrisse kantud",
>                        "algus_kpv":"23.11.2021"
>                    }
>                ],
>                "arinimed":[
>                    {
>                        "kirje_id":9864760,
>                        "kaardi_piirkond":5,
>                        "kaardi_nr":1,
>                        "kaardi_tyyp":"R",
>                        "kande_nr":1,
>                        "sisu":"000 Holdings OÜ",
>                        "algus_kpv":"23.11.2021",
>                        "lopp_kpv":null
>                    }
>                ],
>                "juhatuse_asukoha_aadressid":[
>                    {
>                        "kirje_id":9864751,
>                        "kaardi_piirkond":5,
>                        "kaardi_nr":1,
>                        "kaardi_tyyp":"R",
>                        "kande_nr":1,
>                        "riik":"AUS",
>                        "riik_tekstina":"Austraalia",
>                        "tanav_maja_korter":"313A/133 GOULBURN STREET, Surry Hills, NSW",
>                        "aadress_ads__tyyp":"2",
>                        "postiindeks":"2010",
>                        "algu_kpvs":"23.11.2021",
>                        "lopp_kpv":null
>                    }
>                ],
>                "kontaktisiku_aadressid":[
>                    {
>                        "kirje_id":9864757,
>                        "kaardi_piirkond":5,
>                        "kaardi_nr":1,
>                        "kaardi_tyyp":"R",
>                        "kande_nr":1,
>                        "riik":"EST",
>                        "riik_tekstina":"Eesti",
>                        "ehak":"0298",
>                        "ehak_nimetus":"Kesklinna linnaosa, Tallinn, Harju maakond",
>                        "tanav_maja_korter":"Harju maakond, Tallinn, Kesklinna linnaosa, Ahtri tn 12",
>                        "aadress_ads__ads_oid":"ME00656588",
>                        "aadress_ads__adr_id":2113048,
>                        "aadress_ads__ads_normaliseeritud_taisaadress":"Harju maakond, Tallinn, Kesklinna linnaosa, Ahtri tn 12",
>                        "aadress_ads__ads_normaliseeritud_taisaadress_tapsustus":null,
>                        "aadress_ads__koodaadress":"377840298000005X600001EOT00000000",
>                        "aadress_ads__adob_id":null,
>                        "aadress_ads__tyyp":null,
>                        "postiindeks":"10151",
>                        "algus_kpv":"23.11.2021",
>                        "lopp_kpv":null
>                    }
>                ],
>                "oiguslikud_vormid":[
>                    {
>                        "kirje_id":9864754,
>                        "kaardi_piirkond":5,
>                        "kaardi_nr":1,
>                        "kaardi_tyyp":"R",
>                        "kande_nr":1,
>                        "sisu":"OÜ",
>                        "sisu_nr":5,
>                        "sisu_tekstina":"Osaühing",
>                        "algus_kpv":"23.11.2021",
>                        "lopp_kpv":null
>                    }
>                ],
>                "kapitalid":[
>                    {
>                        "kirje_id":9864758,
>                        "kaardi_piirkond":5,
>                        "kaardi_nr":1,
>                        "kaardi_tyyp":"R",
>                        "kande_nr":1,
>                        "kapitali_suurus":"2500.00",
>                        "kapitali_valuuta":"EUR",
>                        "kapitali_valuuta_tekstina":"euro",
>                        "algus_kpv":"23.11.2021",
>                        "lopp_kpv":null
>                    }
>                ],
>                "majandusaastad":[
>                    {
>                        "kirje_id":9864753,
>                        "kaardi_piirkond":5,
>                        "kaardi_nr":1,
>                        "kaardi_tyyp":"R",
>                        "kande_nr":1,
>                        "maj_aasta_algus":"01.01",
>                        "maj_aasta_lopp":"31.12",
>                        "algus_kpv":"23.11.2021",
>                        "lopp_kpv":null
>                    }
>                ],
>                "pohikirjad":[
>                    {
>                        "kirje_id":9864752,
>                        "kaardi_piirkond":5,
>                        "kaardi_nr":1,
>                        "kaardi_tyyp":"R",
>                        "kande_nr":1,
>                        "kinnitamise_kpv":"19.11.2021",
>                        "muutmise_kpv":null,
>                        "selgitus":null,
>                        "algus_kpv":"23.11.2021",
>                        "lopp_kpv":null,
>                        "sisaldab_erioigusi":false
>                    }
>                ],
>                "sidevahendid":[
>                    {
>                        "kirje_id":9864759,
>                        "liik":"EMAIL",
>                        "liik_tekstina":"Elektronposti aadress",
>                        "sisu":"me@karlssonandreas.com",
>                        "lopp_kpv":null,
>                        "kaardi_piirkond":5,
>                        "kaardi_nr":1,
>                        "kaardi_tyyp":"R",
>                        "kande_nr":1
>                    }
>                ],
>                "teatatud_tegevusalad":[
>                    {
>                        "kirje_id":9000591556,
>                        "emtak_kood":"73111",
>                        "emtak_tekstina":"Reklaamiagentuurid",
>                        "emtak_versioon":2,
>                        "emtak_versioon_tekstina":null,
>                        "nace_kood":"73.11",
>                        "on_pohitegevusala":true,
>                        "algus_kpv":"22.11.2021",
>                        "lopp_kpv":null
>                    }
>                ],
>                "esitab_kasusaajad":true
>            }
>        },
>        {
>            "ariregistri_kood":12754230,
>            "nimi":"001 group OÜ",
>            "yldandmed":{
>                "ettevotteregistri_nr":null,
>                "esmaregistreerimise_kpv":"17.11.2014",
>                "kustutamise_kpv":null,
>                "staatus":"R",
>                "staatus_tekstina":"Registrisse kantud",
>    ...
>
>Every property is in separate line. Cursor containing 3 columns:
>
>    ariregistri_kood I
>    emtak_kood C(5),
>    emtak_tekstina M
>
>should created from this file.
>
>I tried to parse it using
>
>
create cursor tala ( ariregistri_kood I, emtak_kood V(5), emtak_tekstina M )
>    fp  = fopen( '4gbfile.json' )
>    if fp<0
>      messagebox('error')
>      return
>      endif
>      
>    DO WHILE !FEOF(fp)
>      rida = FGETS(fp)
>      do case
>        case  '"ariregistri_kood":' $ Rida
>          insert into tala (regnr) values ( stre( rida, '"ariregistri_kood":' ) )
>    
>    	* "emtak_kood":"73111",
>        case  '"emtak_kood":' $ Rida
>          repl emtak_kood with stre( rida, '"emtak_kood":"', '"' )
>          
>    	* "emtak_tekstina":"Reklaamiagentuurid",
>        case  '"emtak_tekstina":' $ Rida
>          repl emtak_tekstina with stre( rida, '"emtak_tekstina":"', '"' )
>    endcase
>      enddo
>
>
>But got empty cursor since feof() returns immediately true for big file.
>Tried also nfjson parser from https://github.com/VFPX/nfJson
>but got out of memory error.
>
>How to parse this file to get 3 properties?
>
>Same data is also avaliable as xml file. If paring xml is more reasonable, xml can also parsed.
>
>Posted also in https://stackoverflow.com/questions/74396070/how-to-parse-3-gb-json-file
"Navision is evil that needs to be erazed... to the ground"

Jabber: gorila@dione.zcu.cz
Jabber? Jabbim
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform