# nfJson
**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 , _isFileName_,_lReviveCollections_**)**
* cJsonString = **nfJsonCreate(**oVfp, _lFormattedOutput, lNoNullArrayItems,cRootName,aMembersFlag_**)**
* **nfJsonToCursor(**cJson, _cCursorName , lForceImportFromArray_**)** ( creates cursor back from Json created using nfCursorToJson4vfp )
* **nfCursorToJson4vfp()** _&& converts current open table/cursor to Json suitable for later use of nfJsonToCursor()_
* **nfCursorToJson(**_lReturnArray, lArrayofValues, lIncludestruct, lFormattedOutput_**)** __&& converts current open table/cursor to Json
* **nfCursorToObject(**_lCopyToArray, lIncludeStruct_**)**
* **BETA PREVIEW: nfOpenJson(** cJsonString , [ cArrayPath ], [cCursorStructure & object mappings ] )
Similar to SqlServer 2016 openJson function. Allows you to convert Json to cursor. Pass jsonString , optional array path using $. as object root and cursor structure as string with following structure for each column: `-<fieldName> <castExpression> [<$.propertyPath>]` Object types must use JSON as cast type ( see example ). Please check nfOpenJsonTest and [https://docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql](https://docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql) for clear understanding.
text to mssample2 noshow
[
{
"Order": {
"Number":"SO43659",
"Date":"2011-05-31T00:00:00"
},
"AccountNumber":"AW29825",
"Item": {
"Price":2024.9940,
"Quantity":1
}
},
{
"Order": {
"Number":"SO43661",
"Date":"2011-06-01T00:00:00"
},
"AccountNumber":"AW73565",
"Item": {
"Price":2024.9940,
"Quantity":3
}
}
]
ENDTEXT
nfOpenJson( m.mssample2,'$.array',';
- Number v(200) $.Order.Number ;
- Date t $.Order.Date ;
- Customer v(200) $.AccountNumber ;
- itemPrice n(6,2) $.Item.Price ;
- itemQuantity i $.Item.Quantity ;
- Order JSON')
browse
nfOpenJson( m.msSample2 )
browse
nfOpenJson( m.msSample2,'$.array')
browse
## Tests & Sample files
* **nfOpenJsonTest:** samples taken from [https://docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql](https://docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql)
* **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
2017/08/05
* 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. )
2017/03/10
* fixed: proper support for 19 character strings with ISO basic date format & different strictdate settings.
2017/02/05
* fixed: nfJsonRead bug fix: incorrect parsing for strings terminated with escaped double quotes; minor changes & code refactoring.
2017/01/11
* fixed: nfJsonRead: incorrect unescaped output with "set exact = on"
* escapetest.prg - removed "leftover" lines.
2017/01/11
* fixed issue escaping values terminated with "
* nfJsonRead: removed parameter "isFile" now you can just pass a file name or string
* added test: escapeTest.prg
2016/09/28
* minor bug fix: zero item collections created as 1 empty item collection
* proper indent for raw/formatted collection objects
2016/08/16
* 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
2016/07/22
* nfJsonRead: Improved error management
* CollectionTest: added new test
2016/07/20
* Fixed bug: missing closing curly brace on collections as object member
* Updated collections program test
2016/07/09
* Automatic cast for datetime properties ( ISO-8601 basic format & vfp compilant as described on [https://en.wikipedia.org/wiki/ISO_8601#Times](https://en.wikipedia.org/wiki/ISO_8601#Times). )
* nfJsonToCursor Bug Fix: "Date/datetime evaluated to an invalid value" while running under "strictdate = 1" converting empty dates back from Json
2016/07/04
* Added support for control characters encoding ( chr( 0) ~ chr(31) )
2016/05/05
* invalid Json error shows calling program information
2016/04/02
* complex nested objects/arrays validation
* missing object/array closures validation
2016/03/28
* 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
没有合适的资源?快使用搜索试试~ 我知道了~
nfJson - 完全FOX使用Json
共36个文件
json:15个
prg:13个
txt:2个
需积分: 50 19 下载量 81 浏览量
2018-03-06
09:48:24
上传
评论
收藏 80KB ZIP 举报
温馨提示
nfJsonRead nfJsonCreate nfJsonToCursor nfCursorToJson4vfp nfCursorToObject
资源推荐
资源详情
资源评论
收起资源包目录
nfJson-master.zip (36个子文件)
nfJson-master
nfJson
nfOpenJson.PRG 3KB
nfcursortojson.prg 527B
nfjsontocursor.PRG 2KB
nfCursorToJson4vfp.PRG 240B
performanceTest
nfJsonPerfTest.PJT 26KB
nfJsonPerfTest.PJX 2KB
nfjsonperftestSamples.TXT 89KB
nfjsonperftest.PRG 3KB
config.fpw 60B
Tests
emptyDateTest.PRG 643B
examples.PRG 4KB
temp
Cursor tests Output.txt 2KB
colltest.json 1KB
nfopenjsontest.PRG 1KB
collectionTest.prg 4KB
jsonSamples
youtubesearch.json 5KB
iphone photo.json 2KB
chutzpahSchema.json 15KB
googleExtensionSchema.json 21KB
googleMapsDistance.json 1KB
dropbox.json 1KB
mapquest.json 2KB
weatherService.json 13KB
jsonApi.json 2KB
cycloneForecast.json 11KB
mySimpleArray.json 69B
event.json 10KB
tweeter.json 9KB
yahooweather.json 3KB
escapetest.PRG 326B
show json in IE.reg 350B
nfjsoncreate.PRG 8KB
nfcursortoobject.prg 1KB
nfjsonread.PRG 15KB
.gitignore 663B
README.md 6KB
共 36 条
- 1
资源评论
love2008cn
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功