aardio jsonpath抽取

引入.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*****/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容