static async void nep53(string strurl, string rpcurl, string avmPath, string wif, string toaddr, string asset) { //从文件中读取合约脚本 byte[] script = System.IO.File.ReadAllBytes(avmPath); //这里填你的合约所在地址 var nnc = ThinNeo.Helper.GetScriptHashFromScript(script); byte[] prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(wif); byte[] pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey); //获取地址的资产列表 Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(strurl, address); string targeraddr = address; //Transfer it to yourself. ThinNeo.Transaction tran = Helper.makeTran(dir[asset], targeraddr, new ThinNeo.Hash256(asset), decimal.Zero); tran.type = ThinNeo.TransactionType.InvocationTransaction; ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder(); var scriptaddress = new ThinNeo.Hash160(nnc); //Parameter inversion MyJson.JsonNode_Array JAParams = new MyJson.JsonNode_Array(); JAParams.Add(new MyJson.JsonNode_ValueString("(address)" + address)); JAParams.Add(new MyJson.JsonNode_ValueString("(address)" + toaddr)); JAParams.Add(new MyJson.JsonNode_ValueString("(integer)" + 1)); sb.EmitParamJson(JAParams); //Parameter list sb.EmitPushString("transfer"); //Method sb.EmitAppCall(scriptaddress); //Asset contract ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData(); extdata.script = sb.ToArray(); extdata.gas = 1; tran.extdata = extdata; byte[] msg = tran.GetMessage(); byte[] signdata = ThinNeo.Helper.Sign(msg, prikey); tran.AddWitness(signdata, pubkey, address); string txid = tran.GetHash().ToString(); byte[] data = tran.GetRawData(); string rawdata = ThinNeo.Helper.Bytes2HexString(data); byte[] postdata; var url = Helper.MakeRpcUrlPost(rpcurl, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata)); var response = await Helper.HttpPost(url, postdata); MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(response); if (resJO.ContainsKey("result")) { Console.WriteLine(resJO["result"].ToString()); } }
async public Task Demo() { string nnc = "0x3fccdb91c9bb66ef2446010796feb6ca4ed96b05"; byte[] prikey = ThinNeo.Helper.GetPrivateKeyFromWIF("L3tDHnEAvwnnPE4sY4oXpTvNtNhsVhbkY4gmEmWmWWf1ebJhVPVW"); byte[] pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey); string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey); string toaddr = "APwCdakS1NpJsiq6j9SfvkQFS9ubt347a2"; string id_GAS = "0x602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7"; //获取地址的资产列表 Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(api, address); string targeraddr = address; //Transfer it to yourself. ThinNeo.Transaction tran = Helper.makeTran(dir[id_GAS], targeraddr, new ThinNeo.Hash256(id_GAS), decimal.Zero); tran.type = ThinNeo.TransactionType.InvocationTransaction; ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder(); var scriptaddress = new ThinNeo.Hash160(nnc); //Parameter inversion MyJson.JsonNode_Array JAParams = new MyJson.JsonNode_Array(); JAParams.Add(new MyJson.JsonNode_ValueString("(address)" + address)); JAParams.Add(new MyJson.JsonNode_ValueString("(address)" + toaddr)); JAParams.Add(new MyJson.JsonNode_ValueString("(integer)" + 1)); sb.EmitParamJson(JAParams); //Parameter list sb.EmitPushString("transfer"); //Method sb.EmitAppCall(scriptaddress); //Asset contract ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData(); extdata.script = sb.ToArray(); extdata.gas = 1; tran.extdata = extdata; byte[] msg = tran.GetMessage(); byte[] signdata = ThinNeo.Helper.Sign(msg, prikey); tran.AddWitness(signdata, pubkey, address); string txid = tran.GetHash().ToString(); byte[] data = tran.GetRawData(); string scripthash = ThinNeo.Helper.Bytes2HexString(data); string response = await Helper.HttpGet(api + "?method=sendrawtransaction&id=1¶ms=[\"" + scripthash + "\"]"); MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(response); Console.WriteLine(resJO["result"].ToString()); }
public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json) { SkinnedMeshRenderer ic = component as SkinnedMeshRenderer; //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行 //放到外面去了 //材质 MyJson.JsonNode_Array mats = new MyJson.JsonNode_Array(); json["mats"] = mats; foreach (var m in ic.sharedMaterials) { string hash = resmgr.SaveMat(m); mats.Add(new MyJson.JsonNode_ValueString(hash)); } //bounds json["center"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localBounds.center)); json["size"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localBounds.size)); //mesh json["mesh"] = new MyJson.JsonNode_ValueString(resmgr.SaveMesh(ic.sharedMesh)); json["rootboneobj"] = new MyJson.JsonNode_ValueNumber(ic.rootBone.gameObject.GetInstanceID()); MyJson.JsonNode_Array bones = new MyJson.JsonNode_Array(); foreach (var b in ic.bones) { bones.Add(new MyJson.JsonNode_ValueNumber(b.gameObject.GetInstanceID())); } json["boneobjs"] = bones; ic.rootBone.GetInstanceID(); }
public static MyJson.JsonNode_Object StatkItemToJson(VM.StackItem item) { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); var type = item.GetType().Name; if (type == "InteropInterface") { json.SetDictValue(type, (item as VM.Types.InteropInterface).GetInterface <VM.IInteropInterface>().GetType().Name); } else if (type == "Boolean") { json.SetDictValue(type, item.GetBoolean().ToString()); } else if (type == "ByteArray") { json.SetDictValue(type, item.GetByteArray().ToHexString()); } else if (type == "Integer") { json.SetDictValue(type, item.GetBigInteger().ToString()); } else if (item is VM.Types.Array)//item is VM.Types.Struct || 是struct 一定是array { MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); json.SetDictValue(type, array); foreach (var i in (item as VM.Types.Array).ToArray()) { array.Add(StatkItemToJson(i)); } } return(json); }
public static void SaveRecord() { MyJson.JsonNode_Array traninfo = new MyJson.JsonNode_Array(); foreach (var item in TxHistory) { MyJson.JsonNode_Object jsonItem = new MyJson.JsonNode_Object(); traninfo.Add(jsonItem); jsonItem["txid"] = new MyJson.JsonNode_ValueString(item.txid); jsonItem["type"] = new MyJson.JsonNode_ValueString(item.type.ToString()); jsonItem["time"] = new MyJson.JsonNode_ValueString("utc_" + item.time.ToFileTimeUtc()); } MyJson.JsonNode_Array utxospentinfos = new MyJson.JsonNode_Array(); foreach (var item in UtxoHistory) { MyJson.JsonNode_ValueString jsonItem = new MyJson.JsonNode_ValueString(item); utxospentinfos.Add(jsonItem); } MyJson.JsonNode_Object record = new MyJson.JsonNode_Object(); record["trans"] = traninfo; record["utxos"] = utxospentinfos; System.IO.File.Delete("records.json"); System.IO.File.WriteAllText("records.json", record.ToString(), System.Text.Encoding.UTF8); }
private static async Task file_list(IOwinContext context, FormData formdata) { if (formdata.mapParams.ContainsKey("url") && formdata.mapParams.ContainsKey("path")) { var p = CustomServer.GetStaticFileParser(formdata.mapParams["url"]); if (p != null) { var dirs = System.IO.Directory.GetDirectories(p.pathOnDrive); var files = System.IO.Directory.GetFiles(p.pathOnDrive); MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(0); MyJson.JsonNode_Array _files = new MyJson.JsonNode_Array(); MyJson.JsonNode_Array _dirs = new MyJson.JsonNode_Array(); json["files"] = _files; json["subpaths"] = _dirs; foreach (var d in dirs) { MyJson.JsonNode_Object item = new MyJson.JsonNode_Object(); item.SetDictValue("name", d); _dirs.Add(item); } foreach (var f in files) { MyJson.JsonNode_Object item = new MyJson.JsonNode_Object(); item.SetDictValue("name", f); try { System.IO.FileInfo finfo = new System.IO.FileInfo(f); item.SetDictValue("length", finfo.Length); } catch { } _files.Add(item); } await context.Response.WriteAsync(json.ToString()); return; } else { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-2); json["msg"] = new MyJson.JsonNode_ValueString("file_list fail."); await context.Response.WriteAsync(json.ToString()); return; } } else { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-1); json["msg"] = new MyJson.JsonNode_ValueString("need param: url & path."); await context.Response.WriteAsync(json.ToString()); return; } }
void update() { this.textASM.Text = ThinNeo.Helper.Bytes2HexString(this.vscript); var scripthash = ThinNeo.Helper.GetScriptHashFromScript(this.vscript); this.info1.Text = ThinNeo.Helper.Bytes2HexString(scripthash); this.info2.Text = ThinNeo.Helper.GetAddressFromScriptHash(scripthash); MyJson.JsonNode_Array arr = new MyJson.JsonNode_Array(); arr.AddArrayValue("(str)0214"); arr.Add(new MyJson.JsonNode_Array()); var sb = new StringBuilder(); arr.ConvertToStringWithFormat(sb, 4); this.jsonParam.Text = sb.ToString(); if (this.iscript != null) { this.asmList.Items.Clear(); var ops = ThinNeo.Compiler.Avm2Asm.Trans(this.iscript); for (int i = 0; i < ops.Length; i++) { this.asmList.Items.Add(ops[i]); } this.asmBinText.Text = ThinNeo.Helper.Bytes2HexString(this.iscript); } }
public static void uploadScript(string api, string path, string hash) { System.Net.WebClient wc = new MyWebClient(); try { System.Collections.Specialized.NameValueCollection vs = new System.Collections.Specialized.NameValueCollection(); vs["jsonrpc"] = "2.0"; vs["id"] = "1"; vs["method"] = "setcontractscript"; MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); MyJson.JsonNode_Object jsonmap = new MyJson.JsonNode_Object(); jsonmap["hash"] = new MyJson.JsonNode_ValueString(hash); var avm = System.IO.File.ReadAllBytes(System.IO.Path.Combine(path, hash + ".avm")); var cs = System.IO.File.ReadAllText(System.IO.Path.Combine(path, hash + ".cs")); var map = System.IO.File.ReadAllText(System.IO.Path.Combine(path, hash + ".map.json")); var abi = System.IO.File.ReadAllText(System.IO.Path.Combine(path, hash + ".abi.json")); jsonmap["avm"] = new MyJson.JsonNode_ValueString(ThinNeo.Helper.Bytes2HexString(avm)); jsonmap["cs"] = new MyJson.JsonNode_ValueString(Uri.EscapeDataString(cs)); jsonmap["map"] = MyJson.Parse(map); jsonmap["abi"] = MyJson.Parse(abi); array.Add(new MyJson.JsonNode_ValueString(jsonmap.ToString())); vs["params"] = array.ToString(); var ret = wc.UploadValues(api, vs); var txt = System.Text.Encoding.UTF8.GetString(ret); MessageBox.Show(txt); } catch (Exception err) { MessageBox.Show(err.Message); } }
private void Button_Click(object sender, RoutedEventArgs e) { var prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(""); var pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey); var scripthash = ThinNeo.Helper.GetScriptHashFromPublicKey(pubkey); var addres = ThinNeo.Helper.GetAddressFromScriptHash(scripthash); //AbN2K2trYzgx8WMg2H7U7JHH6RQVzz2fnx var vscripthash = ThinNeo.Helper.GetPublicKeyHashFromAddress("AdsNmzKPPG7HfmQpacZ4ixbv9XJHJs2ACz"); ThinNeo.Transaction tx = new ThinNeo.Transaction(); tx.inputs = new ThinNeo.TransactionInput[0]; tx.outputs = new ThinNeo.TransactionOutput[0]; tx.type = ThinNeo.TransactionType.InvocationTransaction; tx.version = 1; //附加一个见证人 ///要他签名 tx.attributes = new ThinNeo.Attribute[1]; tx.attributes[0] = new ThinNeo.Attribute(); tx.attributes[0].usage = ThinNeo.TransactionAttributeUsage.Script; tx.attributes[0].data = scripthash; //拼接调用脚本 var invokedata = new ThinNeo.InvokeTransData(); tx.extdata = invokedata; invokedata.gas = 0; var sb = new ThinNeo.ScriptBuilder(); MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); array.AddArrayValue("(hex160)" + scripthash.ToString()); //witnesscall array.AddArrayValue("(hex160)" + vscripthash.ToString()); //witnessreturn array.AddArrayValue("(str)" + vscripthash.ToString()); //callscript array.AddArrayValue("(str)" + methodCombox.Text); //callmethod var _params = new MyJson.JsonNode_Array(); _params.AddArrayValue(int.Parse(textbox1.Text)); _params.AddArrayValue(int.Parse(textbox2.Text)); array.Add(_params);//params _params.AddArrayValue("(int)" + r.Next()); sb.EmitParamJson(array); sb.EmitPushString("outcall"); ThinNeo.Hash160 contractaddr = new ThinNeo.Hash160("0x24192c2a72e0ce8d069232f345aea4db032faf72"); sb.EmitAppCall(contractaddr); invokedata.script = sb.ToArray(); //签名(谁签名) var msg = tx.GetMessage(); var data = ThinNeo.Helper.Sign(msg, prikey); tx.AddWitness(data, pubkey, addres); DoCallTran(tx); //CallScript(invokedata.script); }
private void Button_Click(object sender, RoutedEventArgs e) { try { var sh = ThinNeo.Helper.HexString2Bytes(textScriptHash.Text); var json = rpc_getScript(sh); if (json == null) { info1.Text = "no script"; info2.Text = "can't help you to fill the parameter json."; } else { info1.Text = "scripthash=" + json.AsDict()["hash"].AsString(); info2.Text = "scriptlen=" + (json.AsDict()["script"].AsString().Length / 2); var param = json.AsDict()["parameters"]; var array = new MyJson.JsonNode_Array(); foreach (var p in param.AsList()) { if (p.AsString() == "String") { array.Add(new MyJson.JsonNode_ValueString("(str)textParam")); } if (p.AsString() == "Array") { array.Add(new MyJson.JsonNode_Array()); } if (p.AsString() == "Boolean") { array.Add(new MyJson.JsonNode_ValueNumber(false)); } if (p.AsString() == "Bytes") { array.Add(new MyJson.JsonNode_ValueString("(hex)0x00")); } if (p.AsString() == "UINT160") { array.Add(new MyJson.JsonNode_ValueString("(hexbig)0xaa020304050607080910bb020304050607080910")); } if (p.AsString() == "UINT256") { array.Add(new MyJson.JsonNode_ValueString("(hexbig)0xaa020304050607080910bb020304050607080910cc020304050607080910dd02")); } if (p.AsString() == "BigInteger") { array.Add(new MyJson.JsonNode_ValueString("(int)735200")); } } StringBuilder sb = new StringBuilder(); array.ConvertToStringWithFormat(sb, 4); jsonParam.Text = sb.ToString(); } } catch { } }
void SaveItem() { //GameObject setobj = null;//选中的对象 //bool bUseHashName = true;//是否使用hash作为资源文件名 //string exportResult = null;//导出结果 //string exportPath = null;//导出路径 //bool bUseHashTreeName = false;//是否使用hash作为导出节点名 //string exportNodeName = "";//导出节点名称 nodeParser.nodeParser np = new nodeParser.nodeParser(); np.SaveNode(this.setobj);//先强制使用HashName if (System.IO.Directory.Exists(exportPath) == false) { System.IO.Directory.CreateDirectory(exportPath); } string respath = System.IO.Path.Combine(exportPath, "resources"); if (System.IO.Directory.Exists(respath) == false) { System.IO.Directory.CreateDirectory(respath); } MyJson.JsonNode_Array indexfile = new MyJson.JsonNode_Array(); foreach (var f in np.bufs) { //写入文件 { var file = System.IO.Path.Combine(respath, f.Key); System.IO.File.WriteAllBytes(file, f.Value); } //记录索引 MyJson.JsonNode_Object indexitem = new MyJson.JsonNode_Object(); indexitem["Name"] = new MyJson.JsonNode_ValueString("resources/" + f.Key); indexitem["Length"] = new MyJson.JsonNode_ValueNumber(f.Value.Length); indexfile.Add(indexitem); } indexfile.Sort((a, b) => { return(string.Compare(a.asDict()["Name"].AsString(), b.asDict()["Name"].AsString())); }); {//保存索引文件 byte[] indexcode = System.Text.Encoding.UTF8.GetBytes(indexfile.ToString()); exportResult = exportNodeName; if (bUseHashTreeName) { exportResult = ResLibTool.ComputeHashString(indexcode); } string outfile = System.IO.Path.Combine(exportPath, exportResult + ".indexlist.txt"); System.IO.File.WriteAllBytes(outfile, indexcode); } }
static MyJson.IJsonNode UnPackJsonArray(System.IO.Stream stream, byte tagfirst, IList <string> pubdict, IList <string> localdict) { MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); int count = ReadCountHead(stream, tagfirst); for (int i = 0; i < count; i++) { array.Add(UnPackJson(stream, pubdict, localdict)); } return(array); }
public static MyJson.IJsonNode Parser(GameObject obj, NeedList needList = null) { AssetMgr.Reset(); MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); Debug.Log("ParserObj:" + obj.name); var comps = obj.GetComponents <Component>(); MyJson.JsonNode_Array jsoncs = new MyJson.JsonNode_Array(); json["name"] = new MyJson.JsonNode_ValueString(obj.name); json["active"] = new MyJson.JsonNode_ValueNumber(obj.activeSelf); json["_id"] = new MyJson.JsonNode_ValueNumber(ObjToID(obj)); json["coms"] = jsoncs; foreach (var c in comps) { if (c == null) { Debug.LogWarning("--组件丢失"); } else { Type type = c.GetType(); var pp = ComponentParser.Instance.GetParser(type); if (pp != null) { MyJson.JsonNode_Object jsonc = new MyJson.JsonNode_Object(); jsonc["type"] = new MyJson.JsonNode_ValueString(type.ToString()); if (c is Behaviour) { jsonc["enabled"] = new MyJson.JsonNode_ValueNumber((c as Behaviour).enabled); } jsonc["param"] = pp.Parser(c, needList); Debug.Log("--" + c.name + "<" + type.ToString() + ">:" + jsonc["param"].ToString()); jsoncs.Add(jsonc); } else { Debug.LogWarning("--" + c.name + "<" + type.ToString() + ">" + "没有处理器"); } } } if (obj.transform.childCount > 0) { MyJson.JsonNode_Array jsonsubarray = new MyJson.JsonNode_Array(); json["child"] = jsonsubarray; foreach (Transform t in obj.transform) { jsonsubarray.Add(Parser(t.gameObject, needList)); } } Debug.Log("ParserObjFinish:" + obj.name); AssetMgr.Reset(); return(json); }
public MyJson.JsonNode_Object ToJson() { MyJson.JsonNode_Object script = new MyJson.JsonNode_Object(); script.SetDictValue("hash", this.hash); MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); script.SetDictValue("ops", array); foreach (var op in ops) { array.Add(op.ToJson()); } return(script); }
public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json) { FB.PosePlus.AniPlayer ic = component as FB.PosePlus.AniPlayer; MyJson.JsonNode_Array anis = new MyJson.JsonNode_Array(); json["clips"] = anis; foreach (var m in ic.clips) { string hash = resmgr.SaveAniClip(m); anis.Add(new MyJson.JsonNode_ValueString(hash)); } }
public static MyJson.JsonNode_Object Export(AntsModule module) { var outjson = new MyJson.JsonNode_Object(); outjson.SetDictValue("hash", "hash"); outjson.SetDictValue("entrypoint", "Main"); var funcsigns = new MyJson.JsonNode_Array(); outjson["functions"] = funcsigns; var eventsigns = new MyJson.JsonNode_Array(); outjson["events"] = eventsigns; foreach (var function in module.mapMethods) { var mm = function.Value; if (mm.isPublic == false) { continue; } var ps = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries); var funcsign = new MyJson.JsonNode_Object(); funcsigns.Add(funcsign); var funcname = ps[1]; if (funcname.IndexOf("::") > 0) { var sps = funcname.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries); funcname = sps.Last(); } funcsign.SetDictValue("name", funcname); var rtype = ConvType(mm.returntype); funcsign.SetDictValue("returntype", rtype); MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array(); funcsign["paramaters"] = funcparams; if (mm.paramtypes != null) { foreach (var v in mm.paramtypes) { var ptype = ConvType(v.type); var item = new MyJson.JsonNode_Object(); funcparams.Add(item); item.SetDictValue("name", v.name); item.SetDictValue("type", ptype); } } } return(outjson); }
public override string ToString() { MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); foreach (var list in needList) { MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); obj[list.Key] = array; foreach (var item in list.Value) { array.Add(new MyJson.JsonNode_ValueString(item)); } } return(obj.ToString()); }
public static string SaveAtlas(UIAtlas atlas, string path, string pathtex) { if (System.IO.Directory.Exists(path) == false) { System.IO.Directory.CreateDirectory(path); } string tname = SaveTexture(atlas.texture, pathtex); MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); obj["pixelSize"] = new MyJson.JsonNode_ValueNumber(atlas.pixelSize); var jsonmat = new MyJson.JsonNode_Object(); obj["mat"] = jsonmat; jsonmat["shader"] = new MyJson.JsonNode_ValueString(atlas.spriteMaterial.shader.name); MyJson.JsonNode_Array shaderparams = new MyJson.JsonNode_Array(); jsonmat["shaderparam"] = shaderparams; foreach (var p in atlas.spriteMaterial.shaderKeywords) { shaderparams.Add(new MyJson.JsonNode_ValueString(p)); } jsonmat["img"] = new MyJson.JsonNode_ValueString(tname); var jsonsparray = new MyJson.JsonNode_Object(); obj["sprites"] = jsonsparray; foreach (var s in atlas.spriteList) { MyJson.JsonNode_Array sarray = new MyJson.JsonNode_Array(); jsonsparray[s.name] = sarray; sarray.Add(new MyJson.JsonNode_ValueNumber(s.x)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.y)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.width)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.height)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderLeft)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderRight)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderTop)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderBottom)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingLeft)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingRight)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingTop)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingBottom)); } string atalsName = atlas.name.ToLower(); System.IO.File.WriteAllText(System.IO.Path.Combine(path, atalsName + ".atlas.txt"), obj.ToString()); return(atalsName); }
public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json) { MeshRenderer ic = component as MeshRenderer; //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行 //放到外面去了 MyJson.JsonNode_Array mats = new MyJson.JsonNode_Array(); json["mats"] = mats; #if UNITY_EDITOR foreach (var m in ic.sharedMaterials) { string hash = resmgr.SaveMat(m); mats.Add(new MyJson.JsonNode_ValueString(hash)); } #else foreach (var m in ic.materials) { string hash = resmgr.SaveMat(m); mats.Add(new MyJson.JsonNode_ValueString(hash)); } #endif }
public static string SaveAtlas(UIAtlas atlas, string path,string pathtex) { if (System.IO.Directory.Exists(path) == false) { System.IO.Directory.CreateDirectory(path); } string tname = SaveTexture(atlas.texture, pathtex); MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); obj["pixelSize"] = new MyJson.JsonNode_ValueNumber(atlas.pixelSize); var jsonmat = new MyJson.JsonNode_Object(); obj["mat"] = jsonmat; jsonmat["shader"] = new MyJson.JsonNode_ValueString(atlas.spriteMaterial.shader.name); MyJson.JsonNode_Array shaderparams = new MyJson.JsonNode_Array(); jsonmat["shaderparam"] = shaderparams; foreach (var p in atlas.spriteMaterial.shaderKeywords) { shaderparams.Add(new MyJson.JsonNode_ValueString(p)); } jsonmat["img"] = new MyJson.JsonNode_ValueString(tname); var jsonsparray = new MyJson.JsonNode_Object(); obj["sprites"] = jsonsparray; foreach (var s in atlas.spriteList) { MyJson.JsonNode_Array sarray = new MyJson.JsonNode_Array(); jsonsparray[s.name] = sarray; sarray.Add(new MyJson.JsonNode_ValueNumber(s.x)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.y)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.width)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.height)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderLeft)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderRight)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderTop)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderBottom)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingLeft)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingRight)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingTop)); sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingBottom)); } string atalsName = atlas.name.ToLower(); System.IO.File.WriteAllText(System.IO.Path.Combine(path, atalsName + ".atlas.txt"), obj.ToString()); return atalsName; }
public static string MakeRpcUrlPost(string url, string method, out byte[] data, params MyJson.IJsonNode[] _params) { var json = new MyJson.JsonNode_Object(); json["id"] = new MyJson.JsonNode_ValueNumber(1); json["jsonrpc"] = new MyJson.JsonNode_ValueString("2.0"); json["method"] = new MyJson.JsonNode_ValueString(method); StringBuilder sb = new StringBuilder(); var array = new MyJson.JsonNode_Array(); for (var i = 0; i < _params.Length; i++) { array.Add(_params[i]); } json["params"] = array; data = System.Text.Encoding.UTF8.GetBytes(json.ToString()); return(url); }
static string MakeRpcUrlPost(string method, params string[] _params) { var json = new MyJson.JsonNode_Object(); json.SetDictValue("id", 1); json.SetDictValue("jsonrpc", "2.0"); json.SetDictValue("method", method); var array = new MyJson.JsonNode_Array(); for (var i = 0; i < _params.Length; i++) { array.Add(new MyJson.JsonNode_ValueString(_params[i])); } json.SetDictValue("params", array); string urldata = json.ToString(); return(urldata); }
void Obj2Json(GameObject _obj, MyJson.JsonNode_Object _json) { _json["name"] = new MyJson.JsonNode_ValueString(_obj.name); _json["id"] = new MyJson.JsonNode_ValueNumber(_obj.GetInstanceID()); //遍历填充组件 MyJson.JsonNode_Array comps = new MyJson.JsonNode_Array(); _json["components"] = comps; foreach (var c in _obj.GetComponents <Component>()) { if (c == null) { Debug.LogWarning("got a commponet null."); continue; } string type = c.GetType().Name.ToLower(); var _cjson = new MyJson.JsonNode_Object(); _cjson["type"] = new MyJson.JsonNode_ValueString(type); if (componentParsers.ContainsKey(type) == false) { Debug.LogWarning("can't find comparser:" + type); continue; } componentParsers[type].WriteToJson(resmgr, _obj, c, _cjson); comps.Add(_cjson); } //遍历填充树 if (_obj.transform.childCount > 0) { MyJson.JsonNode_Array children = new MyJson.JsonNode_Array(); _json["children"] = children; for (int i = 0; i < _obj.transform.childCount; i++) { var subobj = _obj.transform.GetChild(i).gameObject; MyJson.JsonNode_Object _subjson = new MyJson.JsonNode_Object(); Obj2Json(subobj, _subjson); children.Add(_subjson); } } }
private static void filemap_list(IOwinContext context, FormData formdata) { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(0); MyJson.JsonNode_Array maps = new MyJson.JsonNode_Array(); json["maps"] = maps; foreach (var k in CustomServer.mapParser) { if (k.Value is StaticFileParser) { StaticFileParser pv = k.Value as StaticFileParser; MyJson.JsonNode_Object item = new MyJson.JsonNode_Object(); item.SetDictValue("url", "/" + k.Key); item.SetDictValue("pathOnDrive", pv.pathOnDrive); maps.Add(item); } } context.Response.Write(json.ToString()); return; }
public MyJson.JsonNode_Object GenJson() { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json.SetDictValue("name", this.name); var sha1 = SHA1.Create(); json.SetDictValue("returntype", this.returntype); json.SetDictValue("paramcount", this.paramtypes.Count); MyJson.JsonNode_Array jsonparams = new MyJson.JsonNode_Array(); json.SetDictValue("params", jsonparams); for (var i = 0; i < this.paramtypes.Count; i++) { MyJson.JsonNode_Object item = new MyJson.JsonNode_Object(); item.SetDictValue("name", this.paramtypes[i].name); item.SetDictValue("type", this.paramtypes[i].type); jsonparams.Add(item); } return(json); }
public JArray getAddressNep5Asset(string address, string nep5Hash) { string script = null; using (var sb = new ThinNeo.ScriptBuilder()) { ThinNeo.Hash160 shash = new ThinNeo.Hash160(nep5Hash); MyJson.JsonNode_Array JAParams = new MyJson.JsonNode_Array(); JAParams.Add(new MyJson.JsonNode_ValueString("(address)" + address)); sb.EmitParamJson(JAParams); sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)balanceOf")); sb.EmitAppCall(shash); sb.EmitParamJson(new MyJson.JsonNode_Array()); sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)decimals")); sb.EmitAppCall(shash); var data = sb.ToArray(); script = ThinNeo.Helper.Bytes2HexString(data); } var res = Rpc.invokescript(this.neoCliJsonRPCUrl, script).Result; var arr = res.GetDictItem("stack").AsList().ToArray(); var valueString = arr[0].AsDict()["value"].AsString(); var decimalString = arr[1].AsDict()["value"].AsString(); int decimals = int.Parse(decimalString); //-----------精度 //string findStr = "{{assetid:'{0}'}}"; //findStr = string.Format(findStr, nep5Hash); //JArray utxoArr=mh.GetData(Block_mongodbConnStr, Block_mongodbDatabase, "NEP5asset", findStr); //int decimals=(int)((JObject)utxoArr[0])["decimals"]; decimal value = decimal.Parse(Number.getNumStrFromHexStr(valueString, decimals)); return(new JArray(new JObject() { { "value", value } })); }
//public Dictionary<string, byte[]> codes = new Dictionary<string, byte[]>(); //public byte[] GetScript(byte[] script_hash) //{ // string strhash = ""; // foreach (var b in script_hash) // { // strhash += b.ToString("X02"); // } // return codes[strhash]; //} public string GenJson() { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["__name__"] = new MyJson.JsonNode_ValueString("neomodule."); //code var jsoncode = new MyJson.JsonNode_Array(); json["code"] = jsoncode; foreach (var c in this.total_Codes.Values) { jsoncode.Add(c.GenJson()); } //code bytes var code = this.Build(); var codestr = ""; foreach (var c in code) { codestr += c.ToString("X02"); } json.SetDictValue("codebin", codestr); //calls MyJson.JsonNode_Object methodinfo = new MyJson.JsonNode_Object(); json["call"] = methodinfo; foreach (var m in this.mapMethods) { methodinfo[m.Key] = m.Value.GenJson(); } StringBuilder sb = new StringBuilder(); json.ConvertToStringWithFormat(sb, 4); return(sb.ToString()); }
void SaveItem() { //GameObject setobj = null;//选中的对象 //bool bUseHashName = true;//是否使用hash作为资源文件名 //string exportResult = null;//导出结果 //string exportPath = null;//导出路径 //bool bUseHashTreeName = false;//是否使用hash作为导出节点名 //string exportNodeName = "";//导出节点名称 nodeParser.nodeParser np = new nodeParser.nodeParser(); np.SaveNode(this.setobj);//先强制使用HashName if (System.IO.Directory.Exists(exportPath) == false) System.IO.Directory.CreateDirectory(exportPath); string respath = System.IO.Path.Combine(exportPath, "resources"); if (System.IO.Directory.Exists(respath) == false) System.IO.Directory.CreateDirectory(respath); MyJson.JsonNode_Array indexfile = new MyJson.JsonNode_Array(); foreach (var f in np.bufs) { //写入文件 { var file = System.IO.Path.Combine(respath, f.Key); System.IO.File.WriteAllBytes(file, f.Value); } //记录索引 MyJson.JsonNode_Object indexitem = new MyJson.JsonNode_Object(); indexitem["Name"] = new MyJson.JsonNode_ValueString("resources/" + f.Key); indexitem["Length"] = new MyJson.JsonNode_ValueNumber(f.Value.Length); indexfile.Add(indexitem); } indexfile.Sort((a, b) => { return string.Compare(a.asDict()["Name"].AsString(), b.asDict()["Name"].AsString()); }); {//保存索引文件 byte[] indexcode = System.Text.Encoding.UTF8.GetBytes(indexfile.ToString()); exportResult = exportNodeName; if (bUseHashTreeName) { exportResult = ResLibTool.ComputeHashString(indexcode); } string outfile = System.IO.Path.Combine(exportPath, exportResult + ".indexlist.txt"); System.IO.File.WriteAllBytes(outfile, indexcode); } }
public static MyJson.JsonNode_Object ToJson(object ScriptObject) { CLRSharp.CLRSharp_Instance sobj = ScriptObject as CLRSharp.CLRSharp_Instance; if (sobj == null) { return(null); } MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); var stype = sobj.type; // CSLE.SType stype=sobj.type; var ms = stype.GetFieldNames(); foreach (var m in ms) { var field = stype.GetField(m); if (field.isStatic) { continue; } if ((Type)field.FieldType.TypeForSystem == typeof(int)) { obj[m] = new MyJson.JsonNode_ValueNumber((int)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(float)) { obj[m] = new MyJson.JsonNode_ValueNumber((float)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(double)) { obj[m] = new MyJson.JsonNode_ValueNumber((double)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(string)) { obj[m] = new MyJson.JsonNode_ValueString((string)sobj.Fields[m]); } // else if ((Type)m.Value.type.type == typeof(List<object>)) else if ((Type)field.FieldType.TypeForSystem == typeof(List <CLRSharp.CLRSharp_Instance>)) { //处理List List <CLRSharp.CLRSharp_Instance> slist = sobj.Fields[m] as List <CLRSharp.CLRSharp_Instance>; var list = new MyJson.JsonNode_Array(); obj[m] = list; foreach (var item in slist) { list.Add(ToJson(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <string>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List <string> slist = sobj.Fields[m] as List <string>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueString(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <int>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List <int> slist = sobj.Fields[m] as List <int>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <float>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List <float> slist = sobj.Fields[m] as List <float>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List <double>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List <double> slist = sobj.Fields[m] as List <double>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if (field.FieldType is CLRSharp.ICLRType_Sharp) // else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型 { obj[m] = ToJson(sobj.Fields[m]); } else { Logger.Log("发现不能处理的类型:" + stype.Name + ":" + m + ":" + field.FieldType.ToString()); } } return(obj); }
public override string ToString() { MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); foreach(var list in needList) { MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); obj[list.Key] = array; foreach(var item in list.Value) { array.Add(new MyJson.JsonNode_ValueString(item)); } } return obj.ToString(); }
void Obj2Json(GameObject _obj, MyJson.JsonNode_Object _json) { _json["name"] = new MyJson.JsonNode_ValueString(_obj.name); _json["id"] = new MyJson.JsonNode_ValueNumber(_obj.GetInstanceID()); //遍历填充组件 MyJson.JsonNode_Array comps = new MyJson.JsonNode_Array(); _json["components"] = comps; foreach (var c in _obj.GetComponents<Component>()) { if (c == null) { Debug.LogWarning("got a commponet null."); continue; } string type = c.GetType().Name.ToLower(); var _cjson = new MyJson.JsonNode_Object(); _cjson["type"] = new MyJson.JsonNode_ValueString(type); if (componentParsers.ContainsKey(type) == false) { Debug.LogWarning("can't find comparser:" + type); continue; } componentParsers[type].WriteToJson(resmgr, _obj, c, _cjson); comps.Add(_cjson); } //遍历填充树 if (_obj.transform.childCount > 0) { MyJson.JsonNode_Array children = new MyJson.JsonNode_Array(); _json["children"] = children; for (int i = 0; i < _obj.transform.childCount; i++) { var subobj = _obj.transform.GetChild(i).gameObject; MyJson.JsonNode_Object _subjson = new MyJson.JsonNode_Object(); Obj2Json(subobj, _subjson); children.Add(_subjson); } } }
static MyJson.IJsonNode UnPackJsonArray(System.IO.Stream stream, byte tagfirst, IList<string> pubdict, IList<string> localdict) { MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); int count = ReadCountHead(stream, tagfirst); for (int i = 0; i < count; i++) { array.Add(UnPackJson(stream, pubdict, localdict)); } return array; }
public static MyJson.JsonNode_Object Export(NeoModule module, byte[] script) { var sha256 = System.Security.Cryptography.SHA256.Create(); byte[] hash256 = sha256.ComputeHash(script); var ripemd160 = new Neo.Cryptography.RIPEMD160Managed(); var hash = ripemd160.ComputeHash(hash256); var outjson = new MyJson.JsonNode_Object(); //hash StringBuilder sb = new StringBuilder(); sb.Append("0x"); foreach (var b in hash.Reverse().ToArray()) { sb.Append(b.ToString("x02")); } outjson.SetDictValue("hash", sb.ToString()); //entrypoint outjson.SetDictValue("entrypoint", "Main"); var mainmethod = module.mapMethods[module.mainMethod]; if (mainmethod != null) { var name = mainmethod.displayName; outjson.SetDictValue("entrypoint", name); } //functions var funcsigns = new MyJson.JsonNode_Array(); outjson["functions"] = funcsigns; foreach (var function in module.mapMethods) { var mm = function.Value; if (mm.isPublic == false) { continue; } var ps = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries); var funcsign = new MyJson.JsonNode_Object(); funcsigns.Add(funcsign); var funcname = ps[1]; if (funcname.IndexOf("::") > 0) { var sps = funcname.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries); funcname = sps.Last(); } funcsign.SetDictValue("name", function.Value.displayName); MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array(); funcsign["parameters"] = funcparams; if (mm.paramtypes != null) { foreach (var v in mm.paramtypes) { var ptype = ConvType(v.type); var item = new MyJson.JsonNode_Object(); funcparams.Add(item); item.SetDictValue("name", v.name); item.SetDictValue("type", ptype); } } var rtype = ConvType(mm.returntype); funcsign.SetDictValue("returntype", rtype); } //events var eventsigns = new MyJson.JsonNode_Array(); outjson["events"] = eventsigns; foreach (var events in module.mapEvents) { var mm = events.Value; var ps = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries); var funcsign = new MyJson.JsonNode_Object(); eventsigns.Add(funcsign); funcsign.SetDictValue("name", events.Value.displayName); MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array(); funcsign["parameters"] = funcparams; if (mm.paramtypes != null) { foreach (var v in mm.paramtypes) { var ptype = ConvType(v.type); var item = new MyJson.JsonNode_Object(); funcparams.Add(item); item.SetDictValue("name", v.name); item.SetDictValue("type", ptype); } } var rtype = ConvType(mm.returntype); funcsign.SetDictValue("returntype", rtype); } return(outjson); }
public void Log(string log) { array.Add(new MyJson.JsonNode_ValueString(log)); }
private static async Task parseJAVA(IOwinContext context, FormData formdata) { try { string dictname = null; string classname = null; var file = formdata.mapFiles["file"]; var code = System.Text.Encoding.UTF8.GetString(file); //准备临时目录 { Random i = new Random(); var num = i.Next(); while (System.IO.Directory.Exists("tmp\\tmp_" + num.ToString("X08"))) { num++; } dictname = "tmp\\tmp_" + num.ToString("X08"); var fc = code.IndexOf("class"); int ibegin = -1; for (int ib = fc + 6; ib < fc + 100; ib++) { if (ibegin < 0) { if (code[ib] == ' ') { continue; } else { ibegin = ib; } } else { if (code[ib] == ' ' || code[ib] == '}') { classname = code.Substring(ibegin, ib - ibegin); break; } } } } System.IO.Directory.CreateDirectory(dictname); string filename = System.IO.Path.Combine(dictname, classname + ".java"); System.IO.File.WriteAllText(filename, code); string jarfile = "AntShares.SmartContract.Framework.jar"; System.IO.File.Copy(jarfile, System.IO.Path.Combine(dictname, jarfile)); //编译 try { System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(); info.FileName = "cmd.exe"; info.UseShellExecute = false; info.RedirectStandardOutput = true; info.RedirectStandardInput = true; info.RedirectStandardError = true; info.WorkingDirectory = dictname; var proc = System.Diagnostics.Process.Start(info); proc.StandardInput.WriteLine("javac -cp " + jarfile + " " + classname + ".java"); proc.StandardInput.WriteLine("exit"); string back = proc.StandardError.ReadToEnd(); string inerror = ""; int line = -1; string tag = ""; List <string> outline = new List <string>(); List <int> errorline = new List <int>(); List <string> errorTag = new List <string>(); string[] lines = back.Split(new string[] { "\r\n" }, StringSplitOptions.None); for (var i = 0; i < lines.Length; i++) { if (inerror == "") { var mm = lines[i].Split(':'); if (mm.Length > 3) { line = int.Parse(mm[1]); inerror += mm[3]; tag = mm[2]; } } else { if (lines[i].IndexOf("^") >= 0) { outline.Add(inerror); errorline.Add(line); errorTag.Add(tag); inerror = ""; } else { inerror += "\n" + lines[i]; } } } if (outline.Count == 0) { //succ } else { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-3); json["msg"] = new MyJson.JsonNode_ValueString("compile fail."); MyJson.JsonNode_Array errs = new MyJson.JsonNode_Array(); json["errors"] = errs; for (var i = 0; i < outline.Count; i++) { MyJson.JsonNode_Object errtag = new MyJson.JsonNode_Object(); errs.Add(errtag); errtag.SetDictValue("msg", outline[i]); errtag.SetDictValue("line", errorline[i]); errtag.SetDictValue("tag", errorTag[i]); //errtag.SetDictValue("col", r.Errors[i].Column); } await context.Response.WriteAsync(json.ToString()); return; } } catch (Exception err) { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-2); json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on comp."); json["err"] = new MyJson.JsonNode_ValueString(err.ToString()); await context.Response.WriteAsync(json.ToString()); return; } //conv try { JavaModule module = new JavaModule(); module.LoadJar(jarfile); module.LoadClass(System.IO.Path.Combine(dictname, classname + ".class")); var logjson = new Log2Json(); var conv = new Neo.Compiler.JVM.ModuleConverter(logjson); var neomd = conv.Convert(module); var mm = neomd.mapMethods[neomd.mainMethod]; var bs = neomd.Build(); if (bs != null) { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(0); StringBuilder sb = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); var hash = System.Security.Cryptography.SHA256.Create(); var hashbs = hash.ComputeHash(bs); foreach (var b in bs) { sb.Append(b.ToString("X02")); } foreach (var b in hashbs) { sb2.Append(b.ToString("X02")); } json["hex"] = new MyJson.JsonNode_ValueString(sb.ToString()); json["hash"] = new MyJson.JsonNode_ValueString(sb2.ToString()); json["returntype"] = new MyJson.JsonNode_ValueString(mm.returntype); MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array(); json["params"] = funcparams; if (mm.paramtypes != null) { foreach (var v in mm.paramtypes) { funcparams.Add(new MyJson.JsonNode_ValueString(v.type)); } } await context.Response.WriteAsync(json.ToString()); return; } else { { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-4); json["msg"] = new MyJson.JsonNode_ValueString("compile fail."); json["info"] = logjson.array; await context.Response.WriteAsync(json.ToString()); return; } } } catch (Exception err) { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-2); json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on conv."); json["err"] = new MyJson.JsonNode_ValueString(err.ToString()); await context.Response.WriteAsync(json.ToString()); return; } } catch { { MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); json["tag"] = new MyJson.JsonNode_ValueNumber(-2); json["msg"] = new MyJson.JsonNode_ValueString("parse fail."); await context.Response.WriteAsync(json.ToString()); return; } } }
public static MyJson.JsonNode_Object ToJson(object ScriptObject) { CLRSharp.CLRSharp_Instance sobj = ScriptObject as CLRSharp.CLRSharp_Instance; if (sobj == null) return null; MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); var stype = sobj.type; // CSLE.SType stype=sobj.type; var ms = stype.GetFieldNames(); foreach (var m in ms) { var field = stype.GetField(m); if (field.isStatic) continue; if ((Type)field.FieldType.TypeForSystem == typeof(int)) { obj[m] = new MyJson.JsonNode_ValueNumber((int)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(float)) { obj[m] = new MyJson.JsonNode_ValueNumber((float)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(double)) { obj[m] = new MyJson.JsonNode_ValueNumber((double)sobj.Fields[m]); } else if ((Type)field.FieldType.TypeForSystem == typeof(string)) { obj[m] = new MyJson.JsonNode_ValueString((string)sobj.Fields[m]); } // else if ((Type)m.Value.type.type == typeof(List<object>)) else if ((Type)field.FieldType.TypeForSystem == typeof(List<CLRSharp.CLRSharp_Instance>)) { //处理List List<CLRSharp.CLRSharp_Instance> slist = sobj.Fields[m] as List<CLRSharp.CLRSharp_Instance>; var list = new MyJson.JsonNode_Array(); obj[m] = list; foreach (var item in slist) { list.Add(ToJson(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List<string>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List<string> slist = sobj.Fields[m] as List<string>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueString(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List<int>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List<int> slist = sobj.Fields[m] as List<int>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List<float>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List<float> slist = sobj.Fields[m] as List<float>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)field.FieldType.TypeForSystem == typeof(List<double>)) { var list = new MyJson.JsonNode_Array(); obj[m] = list; List<double> slist = sobj.Fields[m] as List<double>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if (field.FieldType is CLRSharp.ICLRType_Sharp) // else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型 { obj[m] = ToJson(sobj.Fields[m]); } else { Logger.Log("发现不能处理的类型:" + stype.Name + ":" + m + ":" + field.FieldType.ToString()); } } return obj; }
public static MyJson.JsonNode_Object ToJson(object ScriptObject) { CSLE.SInstance sobj = ScriptObject as CSLE.SInstance; if (sobj == null) return null; MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object(); CSLE.SType stype=sobj.type; foreach (var m in stype.members) { if ((Type)m.Value.type.type == typeof(int)) { obj[m.Key] = new MyJson.JsonNode_ValueNumber((int)sobj.member[m.Key].value); } else if ((Type)m.Value.type.type == typeof(float)) { obj[m.Key] = new MyJson.JsonNode_ValueNumber((float)sobj.member[m.Key].value); } else if ((Type)m.Value.type.type == typeof(double)) { obj[m.Key] = new MyJson.JsonNode_ValueNumber((double)sobj.member[m.Key].value); } else if ((Type)m.Value.type.type == typeof(string)) { obj[m.Key] = new MyJson.JsonNode_ValueString((string)sobj.member[m.Key].value); } else if ((Type)m.Value.type.type == typeof(List<object>)) { //处理List List<object> slist = sobj.member[m.Key].value as List<object>; var list = new MyJson.JsonNode_Array(); obj[m.Key] = list; foreach(var item in slist) { list.Add(ToJson(item)); } } else if ((Type)m.Value.type.type == typeof(List<string>)) { var list =new MyJson.JsonNode_Array(); obj[m.Key] = list; List<string> slist = sobj.member[m.Key].value as List<string>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueString(item)); } } else if ((Type)m.Value.type.type == typeof(List<int>)) { var list = new MyJson.JsonNode_Array(); obj[m.Key] = list; List<int> slist = sobj.member[m.Key].value as List<int>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)m.Value.type.type == typeof(List<float>)) { var list = new MyJson.JsonNode_Array(); obj[m.Key] = list; List<float> slist = sobj.member[m.Key].value as List<float>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((Type)m.Value.type.type == typeof(List<double>)) { var list = new MyJson.JsonNode_Array(); obj[m.Key] = list; List<double> slist = sobj.member[m.Key].value as List<double>; foreach (var item in slist) { list.Add(new MyJson.JsonNode_ValueNumber(item)); } } else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型 { obj[m.Key] = ToJson(sobj.member[m.Key].value); } else { Debug.Log("发现不能处理的类型:" + stype.Name + ":" + m.Key + ":" + m.Value.type.ToString()); } } return obj; }