HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0511
princeJSONの整形4解決


prince

リンク

2015/5/11(Mon) 20:30:08|NO.69145

HSPからJSONを整形したいので、Javascriptを呼び出してみましたがうまく動きません。どうすればいいでしょうか?

JScript = "Text = function(Buf) { return JSON.stringify(JSON.parse(Buf), null, \" \");}" JSONBefore = "{\"aaa\":\"ccc\", \"bbb\":[{\"ddd\":1,\"eee\":2},{\"ddd\":3,\"eee\":4}]}" JSONAfter = "" newcom WSHObject, "ScriptControl" comres JSONAfter WSHObject("Language") = "JScript" WSHObject -> "AddCode" JScript WSHObject -> "Run" "Text", JSONBefore mes "stat:" + stat mes "-----↓Before↓-----" mes JSONBefore mes "-----↓After↓-----" mes JSONAfter delcom WSHObject



この記事に返信する


kanamaru

リンク

2015/5/11(Mon) 22:02:48|NO.69147

6行目ですかね?
WSHObject-〉“Language”,“Jscript”
にしてみてください。
comはあまり使ったことが無いのでわかりませんが、
princeさんのように書けるのでしょうか?
あと考えられるとしたら、
jsonの操作なら
hspinetらへんがを使うほうがいいかもしれません。



totori

リンク

2015/5/12(Tue) 00:33:58|NO.69148


JScript = "Text = function(Buf) { return JSON.stringify(JSON.parse(Buf), null, \" \");}" JSONBefore = "{\"aaa\":\"ccc\", \"bbb\":[{\"ddd\":1,\"eee\":2},{\"ddd\":3,\"eee\":4}]}" JSONAfter = "" newcom WSHObject, "ScriptControl" comres JSONAfter WSHObject("Language") = "JScript" WSHObject -> "AddCode" JScript WSHObject -> "Run" "Text", JSONBefore mes "stat:" + stat pError = WSHObject("Error") mes "Error:" + pError("Description") delcom pError mes "-----↓Before↓-----" mes JSONBefore mes "-----↓After↓-----" mes JSONAfter delcom WSHObject
を実行すると、
「'JSON'は宣言されていません。」と表示されます。

どうやら、JSONオブジェクトはJScriptのバージョン5.8でないと実装されていないそうです。
https://msdn.microsoft.com/en-us/library/cc836458%28v=vs.84%29.aspx

ScriptControlを使用してJScriptを実行した場合は、バージョン5.7で動作するそうです。
(厳密にいうとデフォルトが5.7)
http://dev.activebasic.com/egtra/2011/12/14/456/

IActiveScript経由で実行すると5.8相当に設定できるようです。
http://subtech.g.hatena.ne.jp/mayuki/20111216/1324015296

が、IActiveScriptSiteインターフェースを実装しないといけないので、
HSPだけで実装できるのかちょっと怪しいです。
http://atata.sakura.ne.jp/net/chap25.html

以下、途中まで
JScriptのバージョンを変えるところまでしかやってないので、実質意味ないです。


#define SCRIPTPROP_INVOKEVERSIONING 0x00004000 #define IID_IActiveScriptProperty "{4954E0D0-FBC7-11D1-8410-006008C3FBFC}" #usecom IActiveScriptProperty IID_IActiveScriptProperty #comfunc IActiveScriptProperty_SetProperty 4 int, int, var #define IID_IActiveScriptParse "{BB1A2AE2-A4F9-11cf-8F20-00805F2CD064}" #usecom IActiveScriptParse IID_IActiveScriptParse #comfunc IActiveScriptParse_InitNew 3 // JScript9(chakra) newcom pActiveScript, "{16D51579-A30B-4C8B-A276-0FF4DC41E755}" querycom pActiveScriptProperty, pActiveScript, IActiveScriptProperty dimtype v, vartype("variant"), 1 v("value") = 3 IActiveScriptProperty_SetProperty pActiveScriptProperty, SCRIPTPROP_INVOKEVERSIONING, 0, v mes stat



prince

リンク

2015/5/12(Tue) 11:59:57|NO.69155

ありがとうございます。
COMに関しては初心者なので、他の方法を使うことにします。



kanamaru

リンク

2015/5/13(Wed) 18:00:51|NO.69167

試しにhspでjsonの整形を行う(といっても簡単なjsonだけ)プログラム、
作ってみました。
あくまでもお試しで作ったので、動作保障はしません。
(まあパソコンが壊れたりはしないだろうし)
入れ子オブジェクトに対応してません。
配列は仮対応です。

json="" mesbox json,640,400 objskip 0,2 button "convert",*c stop *c strrep json,"\n","" strrep json," ","" strrep json," ","" strrep json,"\t","" strrep json,"[{","[\n\t{\n\t" strrep json,"}]","\n}\n\n]\n" strrep json,"},","@@@###@@@" strrep json,"{","{\n\t" strrep json,"}","\n\t}\n" strrep json,"@@@###@@@","\n},\n" strrep json,"\t\n\t","\t" strrep json,"\n\t}","\t}" strrep json,"\",\"","\",\n\t\t\"" strrep json,"\t{\n\t","\t{\n\t\t" objprm 0,json



ONION software Copyright 1997-2023(c) All rights reserved.