Gedemin TLB.IGedemin.Dataset2JSON
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) |
||
| Строка 42: | Строка 42: | ||
MsgBox "Time: " & (WinAPI.GetTickCount - T) & "ms" | MsgBox "Time: " & (WinAPI.GetTickCount - T) & "ms" | ||
End Sub | End Sub | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | Результат: | ||
| + | <syntaxhighlight lang="json"> | ||
| + | "name": [ | ||
| + | { | ||
| + | "ID": 650001, | ||
| + | "NAME": "Орг", | ||
| + | "PHONE": null, | ||
| + | "FAX": null, | ||
| + | "ZIP": null, | ||
| + | "COUNTRY": "1800010", | ||
| + | "DISTRICT": null, | ||
| + | "CITY": null, | ||
| + | "ADDRESS": null | ||
| + | }, | ||
| + | { | ||
| + | "ID": 161863497, | ||
| + | "NAME": "ДКУСП \"Лепельская ПМК-75\"", | ||
| + | "PHONE": "12", | ||
| + | "FAX": null, | ||
| + | "ZIP": null, | ||
| + | "COUNTRY": "Беларусь", | ||
| + | "DISTRICT": null, | ||
| + | "CITY": null, | ||
| + | "ADDRESS": ", ул. Партизанская, 8, 211180 г. Лепель" | ||
| + | }, | ||
| + | ... | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Версия 19:28, 18 февраля 2022
From Gedemin TLB.pas
procedure Dataset2JSON(const InQ: IgsIBSQL; const OutS: IgsStream; const Fields: WideString; DateTimeInMs: WordBool; const TZ: WideString; WithMs: WordBool; MakeArray: WordBool; const Name: WideString; Indent: Integer; UTF8: WordBool);
Unit: Gedemin TLB
Type: procedure
Visibility: public
Member Of: IGedemin
Описание
Конвертирует результат выполнения запроса в JSON объект.
Параметры
- InQ
- Компонент TIBSQL, подготовленный для чтения результирующих данных. Т.е. после выполнения Execute.
- OutS
- Поток, куда будет записан результат.
- Fields
- Имена полей для экспорта. Через запятую. Если передана пустая строка, то будут экспортированы все поля из результирующей выборки. Имена полей не чувствительны к регистру, поэтому их можно использовать если надо сменить регистр символов в результирующем JSON. Например, в базе данных поле имеет имя GOODNAME, а в результирующий JSON надо записать GoodName. Тогда перечисляем список полей в нужном регистре в параметре Fields. Здесь же можно переименовать поле. Для этого следует указать Имя_поля_в_выборке=Имя_поля_в_JSON. Например, в выборке поле называется GOODID, а в JSON оно должно записаться как Id, то указываем GOODID=Id.
- SubObjects
- DateTimeInMs
- Даты и время записывать не в строковом представлении, а числом, в миллисекундах, в соответствии со стандартом JS.
- TZ
- Часовой пояс. Сейчас не используется. Должна быть пустая строка.
- WithMs
- Записывать миллисекунды при сохранении даты и времени в строковом представлении.
- MakeArray
- Если True, результат будет оформлен как массив. Установите данный параметр в False, если конечный JSON будет формироваться как результат объединения нескольких вызовов Dataset2JSON.
- Name
- Имя JSON объекта (массива) с данными. Если не указано (пустая строка), то будет сформирован просто массив без имени.
- Indent
- Отступ в пробелах. Если передано 0, JSON не будет форматирован и будет занимать минимальный размер.
- UTF8
- Если True, то результирующие данные будут преобразованы в UTF8. Если False -- будут записаны в однобайтовой кодировке Win-1251.
Примеры использования
Sub ExportToJSON Const fmCreate = &HFFFF& Const FileName = "c:\temp\test.json" Dim FS, Creator, T T = WinAPI.GetTickCount Set Creator = New TCreator Dim q Set q = Creator.GetObject(nil, "TIBSQL", "") Set q.Transaction = gdcBaseManager.ReadTransaction q.SQL.Text = "SELECT id, name, phone, fax, zip, country, district, city, address FROM gd_contact" q.ExecQuery Set FS = Creator.GetObject(Array(FileName, fmCreate), "TFileStream", "") Call System.Dataset2JSON(q, FS, "", "", False, "", False, True, "name", 2, True) MsgBox "Time: " & (WinAPI.GetTickCount - T) & "ms" End Sub
Результат:
Указан неподдерживаемый язык.
Вы должны указать язык следующим образом: <source lang="html4strict">...</source>
Поддерживаемые языки:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
"name": [
{
"ID": 650001,
"NAME": "Орг",
"PHONE": null,
"FAX": null,
"ZIP": null,
"COUNTRY": "1800010",
"DISTRICT": null,
"CITY": null,
"ADDRESS": null
},
{
"ID": 161863497,
"NAME": "ДКУСП \"Лепельская ПМК-75\"",
"PHONE": "12",
"FAX": null,
"ZIP": null,
"COUNTRY": "Беларусь",
"DISTRICT": null,
"CITY": null,
"ADDRESS": ", ул. Партизанская, 8, 211180 г. Лепель"
},
...