さて,TMSWebCoreのJSON取り出しですが、
ものすごい手法を発見してしまいました。
わかりやすさでは前回を上回ります。
効率は?ですが、ご紹介します。
var s:string; v:integer; begin s:=SocketData.jsobject.toString;
asm
let jo=JSON.parse(s);
v=jo.hoge; end;
v:=v+1;
:
; end;
です。
気持ち悪い構文が並んでいますね(笑)
asm ~ end;
の間のBlockにはJavaScriptが書けます。
なので、受信したJSON文字列 sをJavaScriptに渡します。
ここの変数の授受はシームレスなんです。
となればJSON.parseでJavaScriptObjectにしてしまえば
Valueの取り出しは何がこようとも
jo.hoge の記法で代入できます。
ブロックを抜けた時点で vには値が入ってますので、
Pascal側で使えます。
JSONが配列であれば、
v=jo.ARRAY[5];
のように取ってこれます。
この手法はObject PascalでのJSONの扱いをみれば,はるかに簡単です。
v:=(jo.GetValue('hoge') as TJSONNumber).AsInt;
だったのが、
v=jo.hoge;
で終わりますね。
変数が共用できるのが驚愕じゃないですかね?
まあ考えてみればすべてトランスパイルされてJavaScriptになるので
できるよね。といったところでしょうか。
文法が混ざるので、非常に気持ち悪いですが、
asm構文は古くはTurboPascalでアセンブラの
インライン記法として導入されていた、歴史のある文法ですね。
たまたまなのか、異言語混在の手法としてはセンスを感じます。
その後、下記の記事を見つけました。
TMSによる記事ですが、大変詳しくJavaScriptとDelphiの
関係について解説してあります。
唯一無二の解説かと。
勉強になります。
ではでは。