引入.Net的NewtonsoftJson库,实现json文档的jsonpath抽取
import dotNet
import web.json;
namespace myplu
class jpath{
ctor( jsn ){
this = ..Newtonsoft.Json.Linq.JObject.Parse(jsn);
this[["select"]] = function(jsonpath,node){
node := this;
return tostring(node.SelectToken(jsonpath));
};
this[["selectList"]] = function(jsonpath,node){
node := this;
var nodes = node.SelectTokens(jsonpath);
return ..web.json.parse(..Newtonsoft.Json.JsonConvert.SerializeObject(nodes));
};
};
/*对象的所有成员必须用分号分隔*/
}
namespace jpath
var assembly = ..dotNet.load("Newtonsoft.Json",$"~\lib\dotNet\json\.res\Newtonsoft.Json.dll")
assembly.import("Newtonsoft.Json.Linq");
assembly.import("Newtonsoft.Json");
/*****intellisense()
myplu.jpath = 导入jsonpath解析库
myplu.jpath(__) = 创建jsonpath解析器,\n@1json文本内容\n!jpathNode.
end intellisense*****/
/*****intellisense(!jpathNode)
select(.(jpath,查找节点) = 从@2指定的节点中执行@1查找,返回第一个匹配结果字符。
selectList(.(jpath,查找节点) = 从@2指定的节点中执行@1查找,返回所有匹配结果字符。
SelectToken(__) = jsonpath查找第一个匹配的结果。\n!jpathNode.
SelectTokens(__) = jsonpath查找所有结果。\n!jsonNodeCollection.
end intellisense*****/
/*****intellisense(!jsonNodeCollection)
end intellisense*****/