From d56e1bff2c6f5184a0f5e7b2c4ae079597159d88 Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Wed, 25 Oct 2023 00:32:42 +0800 Subject: [PATCH] :zap: change json.JSON to json --- std/json.nas | 48 ++++++++++++++++++++++++------------------------ test/json.nas | 42 +++++++++++++++++++++--------------------- test/jsonrpc.nas | 11 +++++------ 3 files changed, 50 insertions(+), 51 deletions(-) diff --git a/std/json.nas b/std/json.nas index e2ff68a..d656ed0 100644 --- a/std/json.nas +++ b/std/json.nas @@ -19,7 +19,7 @@ var _j_content = [ "identifier" ]; -var JSON = func() { +var parse = func() { var text = ""; var line = 1; @@ -66,7 +66,7 @@ var JSON = func() { var get = func(str) { init(); if (!size(str)) { - println("JSON.parse: empty string"); + println("json::parse: empty string"); str = "[]"; } text = str; @@ -147,7 +147,7 @@ var JSON = func() { var match = func(type) { if(token.type!=type) - println("JSON.parse: line ",line,": expect ",_j_content[type]," but get `",token.content,"`."); + println("json::parse: line ",line,": expect ",_j_content[type]," but get `",token.content,"`."); next(); return; } @@ -212,30 +212,30 @@ var JSON = func() { return vec; } - return { - parse:func(str) { - if(typeof(str)!="str") { - println("JSON.parse: must use string"); - return []; - } - get(str); - next(); - - if (token.type==_j_lbrkt) { - var res = vec_gen(); - } else { - var res = hash_gen(); - } - - init(); - return res; + return func(source) { + if(typeof(source)!="str") { + println("json::parse: must use string but get", typeof(str)); + return []; } - }; + + get(source); + next(); + + if (token.type==_j_lbrkt) { + var res = vec_gen(); + } else { + var res = hash_gen(); + } + + init(); + return res; + } }(); -JSON.stringify = func(object) { - if(typeof(object)!="hash" and typeof(object)!="vec") { - println("JSON.stringify: must use hashmap or vector"); +var stringify = func(object) { + var object_type = typeof(object); + if(object_type!="hash" and object_type!="vec" and object_type!="namespace") { + println("json::stringify: must use hashmap or vector, but get ", typeof(object)); return "[]"; } diff --git a/test/json.nas b/test/json.nas index fd04cdd..d5be934 100644 --- a/test/json.nas +++ b/test/json.nas @@ -1,9 +1,7 @@ import.std.json; import.std.process_bar; -var JSON = json.JSON; - -var ss=JSON.stringify({ +var ss = json.stringify({ vec:[0,1,2], hash:{ m1:0, @@ -17,10 +15,11 @@ var ss=JSON.stringify({ empty_an:[[[[[[{}]]]]]], function:func(){} }); -println(ss,"\n"); -println(JSON.parse(ss),"\n"); -var ss=JSON.stringify([{ +println(ss, "\n"); +println(json.parse(ss), "\n"); + +var ss = json.stringify([{ vec:[0,1,2,3], hash:{ m1:0, @@ -33,12 +32,13 @@ var ss=JSON.stringify([{ empty_an:[[[[[{}]]]]], function:func(){} }]); -println(ss,"\n"); -println(JSON.parse(ss),"\n"); + +println(ss, "\n"); +println(json.parse(ss), "\n"); func { - var bar=process_bar.high_resolution_bar(30); - var tmp=[ + var bar = process_bar.high_resolution_bar(30); + var tmp = [ {t0:nil}, {t1:nil}, {t2:nil}, @@ -50,18 +50,18 @@ func { ]; srand(); - foreach(var h;tmp) { - var name=keys(h)[0]; - h[name]=[]; - print("\e[1000D",bar.bar(0)); - for(var i=0;i<500;i+=1) { - append(h[name],{id:i,content:int(rand()*1e7)}); - print("\e[1000D",bar.bar((i+1)/500)); + foreach(var h; tmp) { + var name = keys(h)[0]; + h[name] = []; + print("\e[1000D", bar.bar(0)); + for(var i = 0; i<500; i+=1) { + append(h[name], {id:i, content:int(rand()*1e7)}); + print("\e[1000D", bar.bar((i+1)/500)); } - print("\e[1000D",bar.bar(1)," executing...\n"); + print("\e[1000D", bar.bar(1), " executing...\n"); } - print("\e[1000D","\e["~str(size(tmp))~"A"); - foreach(var h;JSON.parse(JSON.stringify(tmp))) { - println("\e[1000D",bar.bar(1)," parse done ",keys(h)[0]," ",size(h[keys(h)[0]])); + print("\e[1000D", "\e["~str(size(tmp))~"A"); + foreach(var h; json.parse(json.stringify(tmp))) { + println("\e[1000D", bar.bar(1), " parse done ", keys(h)[0], " ", size(h[keys(h)[0]])); } }(); \ No newline at end of file diff --git a/test/jsonrpc.nas b/test/jsonrpc.nas index 2b207dc..f976fc5 100644 --- a/test/jsonrpc.nas +++ b/test/jsonrpc.nas @@ -2,7 +2,6 @@ import.module.libsock; import.std.json; import.std.runtime; -var JSON = json.JSON; var socket = libsock.socket; var gettime=func(){ @@ -79,19 +78,19 @@ var server=func(ip,port) { while(1) { var data=jsonRPC.recv(client); if (data!=nil) { - data=JSON.parse(data); + data=json.parse(data); } else { break; } if (contains(methods,data.method)) { - jsonRPC.send(client, JSON.stringify({ + jsonRPC.send(client, json.stringify({ jsonrpc:2.0, id:data.id, error:"null", result:methods[data.method](data.params) })); } else { - jsonRPC.send(client, JSON.stringify({ + jsonRPC.send(client, json.stringify({ jsonrpc:2.0, id:data.id, error:"no such method \\\""~data.method~"\\\"", @@ -113,13 +112,13 @@ var client=func(ip,port) { var server=jsonRPC.connect(ip,port); while(1) { unix.sleep(5); - var data=JSON.stringify({jsonrpc:2.0, id:call_id, method:methods[rand()*size(methods)],params:params[rand()*size(params)]}); + var data=json.stringify({jsonrpc:2.0, id:call_id, method:methods[rand()*size(methods)],params:params[rand()*size(params)]}); jsonRPC.send(server, data); var respond=jsonRPC.recv(server); if (respond==nil) { break; } - println("[",gettime(),"] result: ",JSON.parse(respond).result); + println("[",gettime(),"] result: ",json.parse(respond).result); call_id+=1; } jsonRPC.disconnect(server);