URLから開かれたJSONファイルを解析するには?Web からダウンロードした JSON ファイルを JMP にインポートしたいと考えています。 私がこれを行うことができた最良の方法は、GUI を使用して手動で [ファイル] --> [開く] --> を選択し、[ファイル名] に URL を入力することです。 ファイル タイプ リストから「JSON データ ファイル (*.json)」を選択すると、JMP はファイルをダウンロードし、解析されたデータを新しいデータテーブルに開きます。 残念ながら、このプロセスを再現するスクリプトを書くことができませんでした。
シンプルなopen("URL")コマンドは、URL の JSON コンテンツをログに保存し、新しいデータテーブルを開きません。 コードを次のように修正してみました。 open("URL","json") 、しかし、これはエラーを返し、データは受信されません。
走れるsave text file("出力パス/ファイル名.json",open("URL"))その後open("出力パス/ファイル名.json") JMP は自動的にファイルを新しいデータテーブルに解析します。 この回避策は私の目標を達成しますが、前の段落で説明した手動のファイル -> オープン プロセスよりも処理時間が大幅に長くなります。 インポートしようとしている URL の多くには大量のデータが含まれているため、処理時間をできるだけ短縮したいと考えています。
JSON ファイルを URL から直接ダウンロードし、正しく解析されたテーブルでデータを開くにはどうすればよいですか?
WindowsでJMP 13.0.0を実行しています。
Re: URL から開かれた JSON ファイルを解析するには?やあ@jwebber 、
解決策を見つけることができたことを嬉しく思います。
Open 関数を使用する代わりに、RunProgram を使用して VBScript ファイルを実行することをお勧めします。
RunProgram を使用すると、vbs ファイル (場合によってはテキスト エディター) に対するコンピューターのファイルの関連付けに依存するのではなく、スクリプトが VBScript ホスト上で実行されるようになります。
RunProgram を使用するもう 1 つの利点は、VBScript が完了するまで JSL スクリプトを一時停止する ReadFunction の「テキスト」オプションを使用できることです。
以下は、以前に JMP コミュニティで共有した情報です。ここ.
WScript または CScript 実行可能ファイルを使用して、RunProgram を使用して VBScript ファイルを実行できます。 唯一の違いは、WScript は MessageBox にエラーを表示するのに対し、CScript はエラーをコンソール/stdout に書き込むことです。
CScript を使用した例を次に示します。
rp <SPAN class="token operator">=</SPAN> <SPAN class="token function">RunProgram</SPAN><SPAN class="token punctuation">(</SPAN> Executable<SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"CSCRIPT.EXE"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> Options<SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"\!"</SPAN>C<SPAN class="token punctuation">:</SPAN>\runMe<SPAN class="token punctuation">.</SPAN>vbs\<SPAN class="token operator">!</SPAN><SPAN class="token string">""</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> Read <SPAN class="token function">Function</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"text"</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Re: URL から開かれた JSON ファイルを解析するには?返信ありがとうございます。 最終的に、VB スクリプトを使用して URL から .json ファイルをダウンロードすることで、この問題を回避しました。 VBS を使用してダウンロードを開始すると、JMP で見つけたどの方法よりもはるかに高速でした。
幸いなことに、プロセス全体でまだ JSL を使用できました。 VB スクリプトを JSL で記述し、.vbs 拡張子を付けてデータを保存し、JSL から open() コマンドを発行して VB スクリプトを実行しました (その後、データがダウンロードされました)。
私が使用したコードの例を次に示します。
//define static VB script
one="dim xHttp: Set xHttp = createobject(\!"Microsoft.XMLHTTP\!")\!rdim bStrm: Set bStrm = createobject(\!"Adodb.Stream\!")\!r";
two="xHttp.Open \!"GET\!", \!"";
three="\!", False\!r";
four="xHttp.Send\!rwith bStrm\!r.type = 1\!r.open\!r.write xHttp.responseBody\!r";
five=".savetofile \!"C:\users\";
six="\desktop\data.json\!", 2\!rend with";
//define user.name
user.name="jwebber";
//define URL
url=www.somewebaddress.com;
//create full VB script
vbs=concat(one,two,url,three,four,five,user.name,six);
//save VB script
save text file("c:/users/"||user.name||"/desktop/download_data.vbs",vbs);
//open vbs file
open("c:/users/"||user.name||"/desktop/download_data.vbs");Re: URL から開かれた JSON ファイルを解析するには?明らかに、私はあなたの元の投稿を完全に読んでいませんでした!
JSON データへの変更が進むべき道であることは確かにご存知でした.... 他の返信から JSL に相当するものを入手できてうれしいです。開くダイアログのダウンロード時間に追いつくために、パフォーマンスの改善を行う必要があるようです。
ジョン
Re: URL から開かれた JSON ファイルを解析するには?JMP 13.2 では、ファイルを開く方法をより細かく制御できます。残念ながら、この動作を制御できるかどうかは明らかではありません。必要なものを手に入れることができるはずです。
受信したファイル拡張子が JMP に認識されていない場合は、次に編集フィールドの右側にあるファイル タイプのドロップダウンを確認します。 あいまいではない選択がある場合は、選択されたタイプのファイルであると想定してファイルを開きます。 ファイル タイプ ドロップダウンの選択があいまいな場合 (例: すべての JMP ファイルまたはすべてのファイル)、ファイルを開くように OS に要求します。
したがって、あなたの場合、これを試すことができます:
* URL を貼り付けます
* ドロップダウンを「すべての JMP ファイル」から「テキスト データ」または「JSON データ ファイル」に変更します。
* [オプション] 記憶させたくない場合は、[次回はこのフィルターを選択...] のチェックを外してください。
* [OK] をクリックします
OS ダイアログは、拡張子のない FSERXVJW のようなおかしな名前でファイルを一時的な場所にダウンロードします。 JMPは、ドロップダウンで選択した種類のファイルを開こうとします。
ダイアログで json をダウンロードし、「JSON データ ファイル」を選択して開く方が Open("URL","json"); よりも速いかどうか知りたいです。ルート。 その場合、実行する作業が必要になる場合があります...
ジョン
Re: URL から開かれた JSON ファイルを解析するには?更新してよかったです。
テーブルの写真を投稿できますか? ソーススクリプトがある場合は、それも投稿してください。 ソース スクリプトには、URL ではなく一時ファイルが含まれます。開くときは常に、URL からダウンロードされたファイルから行われます。 一時ファイル名を URL に置き換えることができるはずです。 JMP 13 では、メニューと JSL を使用した場合に別の方法で URL を一時ファイルにダウンロードする可能性があり、より高速になる可能性があります。 また、キャッシュが関係している可能性もあります。
.json ファイルが CSV インポート コードを通過すると、.json ファイル内のコンマと改行によってデータ テーブルの形状が決まります。 .json ファイル ライターが別の改行を挿入することを決定した場合、別のデータ テーブルが得られます。 .json インポートを使用すると、.json ファイルの変更に対してコードをより堅牢にすることができます。
open() 関数は、ファイル拡張子を使用してファイルの種類を判別できる場合があります。 開くための追加のパラメーターは、ファイル拡張子をオーバーライドし、おそらく URL と共に使用する必要があります。
?パラメータ=値
最後に追加。
Re: URL から開かれた JSON ファイルを解析するには?ソフトウェアを v13.2 に更新し、URL を開いて、新しいデータテーブルに正しく解析できるようになりました。
open("my URL","json")このコマンドの実行は、GUI の file-->open コマンドよりもかなり遅くなります (処理時間は約 2 倍長くなります)。 GUI を使用すると、ファイルのダウンロード ステータスを示すダイアログ ボックスがポップアップ表示されますが、この情報は open() JSL コマンドでは取得できません。 アップグレード前でも、GUI ファイル -->open は URL をすばやく開き、ファイルを正しく解析できました (出力は open("my URL",text) とは異なりました)。 ファイルを正確に複製する方法はありますか-> JSLを使用してプロセスを開きますか? file->open を実行したときに生成されたコードを記録する方法はありますか (Excel でマクロを記録すると、GUI を使用して生成されたコードがキャプチャされるのと同様です)
Re: URL から開かれた JSON ファイルを解析するには?json のサポートは、13.0 以降に追加された可能性があります。 取得しているファイルは、おそらく「json」ではなく「テキスト」を使用するのと同等だと思います。
open("http://date.jsontest.com/", "text")
このテーブルを生成します。
JSON data, not split up very wellJSON data, not split up very wellJSON データ、うまく分割されていない
JMP 13.2で、使用
open("http://date.jsontest.com/","json")
私ははるかに便利なテーブルを取得します:
JSON data, split into columnsJSON data, split into columns列に分割された JSON データ
「テキスト」を指定すると、おそらくファイル->開くから表示されるテーブルを取得できると思います。 13.2 にアップグレードして、より優れた JSON インポートを利用できることを願っています。
Re: URL から開かれた JSON ファイルを解析するには?ソフトウェアの更新に取り組みます。
JSLを使用してGUIファイルを複製できない理由はまだわかりません-> URLを正しく処理して新しいデータテーブルを開くプロセスを開きます。 この手順をスクリプト化する何らかの方法があるはずですよね?
Re: URL から開かれた JSON ファイルを解析するには?JMP 13.0.0 で試してみたところ、表示されているエラーが再現されました。 JMP 13.2 を使用していますが、問題はありません。
13.2にアップデートして、もう一度試していただけませんか? アップデーターは次の場所からダウンロードできます。 jmp.com/update .
Re: URL から開かれた JSON ファイルを解析するには?お返事ありがとうございます、ジャスティン。 サンプル コードを実行したところ、次のエラーが発生しました。
//:*/
open("http://date.jsontest.com/", JSON)
/*:
Unexpected "M". Perhaps there is a missing [ or {.
Line 1 Column 1: ►M",
Tried to open: http://date.jsontest.com/
Cannot open table in access or evaluation of 'Open' , Open/*###*/("http://date.jsontest.com/", JSON)
In the following script, error marked by /*###*/
Open/*###*/("http://date.jsontest.com/", JSON)「,JSON」拡張子を URL に追加しようとしたところ、次のエラーが表示されました。
//:*/
open("my URL",JSON)
/*:
Unexpected "sponseTime". Perhaps there is a missing [ or {.
Line 1 Column 1: ►sponseTime":"2017-09-19T13:33:38.9224228+00:00","S
Tried to open: my URL
Cannot open table in access or evaluation of 'Open' , Open/*###*/(
"my URL",
JSON)
In the following script, error marked by /*###*/
Open/*###*/(
"my URL",
JSON)考え?
Re: URL から開かれた JSON ファイルを解析するには?「JSON」オプションを Open 関数に追加して、JSON ファイルを強制的にデータ テーブルとして開くことができます。
Open( "http://date.jsontest.com/", JSON );
このオプションを使用した場合と使用しない場合のログの比較を次に示します。
open("http://date.jsontest.com/")
/*:
"{
\!"time\!": \!"01:21:07 PM\!",
\!"milliseconds_since_epoch\!": 1505827267889,
\!"date\!": \!"09-19-2017\!"
}
"
//:*/
open("http://date.jsontest.com/", JSON)
/*:
Data Table( "date.jsontest.com" )