Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
January 25, 2023 23:55
January 25, 2023 23:55
January 25, 2023 22:57


Provides a set of fast performance, reliable and easy to use Json functions using pure VFP.

Project Manager: Marco Plaza

Functions & Usage

( Each function is a single prg - No additional dependencies / Requires VFP9 )

  • oJson = nfJsonRead(cJsonString , lReviveCollections)
    Example :
    jsonstr = '{"name":"John", "age":30, "family":{"wife":"Susana","son":"Tom"}, "location":"texas"}'
    vfpobj = nfJsonRead(jsonstr)
    ? vfpobj.age &&will show 30
    ? &&will show Tom

*lReviveCollections: nfJsoncreate stringify key/keyless kcollections as arrays; set this flag if you are parsing json created with nfjsoncreate that you know had a vfp collection; this will perform a extra step to get your collections back from the array representation ( revive it ) or set it to false to view your collections as arrays for debugging purposes -check collectiontest.prg in test folder.

  • cJsonString = nfJsonCreate(oVfp, lFormattedOutput, lNoNullArrayItems,cRootName,aMembersFlag)

  • nfJsonToCursor(cJson, cCursorName , lForceImportFromArray) ( creates cursor back from Json created using nfCursorToJson4vfp )

  • cJsonString = nfCursorToJson4vfp() && converts current open table/cursor to Json suitable for later use of nfJsonToCursor()

  • cJsonString = nfCursorToJson(lReturnArray, lArrayofValues, lIncludestruct, lFormattedOutput) converts current open table/cursor to Json

  • oJson = nfCursorToObject(lCopyToArray, lIncludeStruct)

  • cJsonString = jsonFormat( cJsonStr )* Format json string w/o validate or change element positions

  • nfOpenJson(** cJsonString , [ cArrayPath ], [cCursorStructure & object mappings ] )

    Similar to SqlServer 2016 openJson function

Tests & Sample files

  • nfOpenJsonTest: samples taken from

  • nfJsonPerfTest.prg: just run it and choose one of the embedded json samples from the list to check performance on your pc. ( Allows you to parse Json from clipboard too. )

  • examples.prg will parse the next Json files included in JsonSamples folder. just run from test folder and see sample code and output.

  • collectionTest.prg: creates a complex collection , converts it to Json and back to vfp.

  • Sample Json files included:

    • youtubesearch.json
    • cycloneForecast.json
    • dropbox.json
    • googleMapsDistance.json
    • iphone photo.json
    • mapquest.json
    • mySimpleArray.json
    • tweeter.json
    • weatherService.json
    • yahooweather.json

Release Notes

2022/07/09 ( PatrickvonDeetzen )

  • create json with special characters is now significantly faster (changes made in function "escapeandencode")
  • updated performance test & added new test sample
  • bug fix: missing m. in nfcursortoobject.prg


  • JsonFormat function by Carlos Alloati


  • no matter wich strictdate setting you have set, a JsonDateTime "0000-00-00T00:00:00" will return an empty date.
  • valid JsonDates with time "T00:00:00" will return a date value ( ie: {"testDate":"2017-12-01T00:00:00"} )
  • invalid dates ( ie 2017/50/50 ) properly formatted as Json Date ( ie: 2017-50-50T00:00:00 ) will throw error; ( previous behavior was to return .null. )


  • fixed: proper support for 19 character strings with ISO basic date format & different strictdate settings.


  • fixed: nfJsonRead bug fix: incorrect parsing for strings terminated with escaped double quotes; minor changes & code refactoring.


  • fixed: nfJsonRead: incorrect unescaped output with "set exact = on"
  • escapetest.prg - removed "leftover" lines.


  • fixed issue escaping values terminated with "
  • nfJsonRead: removed parameter "isFile" now you can just pass a file name or string
  • added test: escapeTest.prg


  • minor bug fix: zero item collections created as 1 empty item collection
  • proper indent for raw/formatted collection objects


  • nfJsonPerfTest: added compiled exe, samples file ships as a separate file for you to edit
  • fixed bug on test prgs: clean installs would fail due to missing temp folder on distribution zip w/o tests\temp folder
  • fixed bug on collectionTest


  • nfJsonRead: Improved error management
  • CollectionTest: added new test


  • Fixed bug: missing closing curly brace on collections as object member
  • Updated collections program test


  • Automatic cast for datetime properties ( ISO-8601 basic format & vfp compilant as described on )
  • nfJsonToCursor Bug Fix: "Date/datetime evaluated to an invalid value" while running under "strictdate = 1" converting empty dates back from Json


  • Added support for control characters encoding ( chr( 0) ~ chr(31) )


  • invalid Json error shows calling program information


  • complex nested objects/arrays validation
  • missing object/array closures validation


  • nfJsonRead performs JSON validation: invalid Json throws error indicating reason.
  • nfJsonPerfTest: proper error management enabled for invalid Json input from clipboard
  • nfJsonToCursor: use of strict date format


Provides a set of fast performance, reliable and easy to use Json functions using pure VFP







No releases published


No packages published