我有一个非常具体的问题。我正在为内部文档管理系统构建一个自定义前端,我使用DMS的JSON-API得到一些日期,但需要为前端获取更多参数。 与软件一起工作的团队同意对这些值使用现有的文本参数“描述”,并开始在大多数文档的开头添加像“”这样的块。
我现在正在使用jquery和monkberry在一个简单的前端。这主要是有效的,但我的同事希望有更多功能...他们最希望的是一个文件夹结构,至少有2个级别。 我告诉他们添加属性参数“folder =''”并填写他们从计算机知道的结构,给出示例“folder ='topfolder / subfolder'”。现在我需要以某种方式解析它:D 解析这样的结构的最佳方法是什么:
{
"documents": [
{
"name": "Document A",
"description": "<attribute folder='topfolderA/subfolder1' visible='' tags='' />This is just a text",
"scope": "Public",
"id": "9fcf8270d6d546419a555c4c6fd0ccd5"
},
{
"name": "Document B",
"description": "<attribute folder='topfolderB/subfolder2' visible='' tags='' />This is just the normal descriptioon Text",
"scope": "Public",
"id": "331338eb001c4a48ae3bb164653ae596"
},
{
"name": "Document C",
"description": "No description written yet",
"scope": "Private",
"id": "331338eb001c422easeeseessa3ae596"
}
],
"about": {
"roles": [
"Admin",
"Author"
]
}
}
到我可以迭代的对象/数组结构,比如
- folder A
--- subfolder 1
------ Document I
--- subfolder 2
------ Document II
--- Document III
--- Document IV
- folder B
--- subfolder 3
------ Document V
------ Document VI
--- subfolder 4
------ Document VII
--- Document VIII
(每个文档对象包含数据值)
有关如何在vanilla js和/或jQuery中执行此操作的任何想法? :)
提前致谢
托马斯
答案 0 :(得分:0)
我认为您可以在解析时进行简单的正则表达式搜索。
一些示例代码段:
const regex = /folder\='([a-z,A-Z,0-9,\/]*)'/g;
const str = `<attribute folder='topfolderA/subfolder1' visible='' tags='' />`;
var m = regex.exec(str);
m
是result array,对于示例,它看起来像["folder='topfolderA/subfolder1'", "topfolderA/subfolder1"]
。数组的第一个元素是整个正则表达式匹配,以下索引中的元素是我们保存的paranthesized匹配。我们可以使用()
来保存匹配,同时进行正则表达式搜索。
一旦你有了这种情况下的路径:
var path = m[1];
var structure = path.split('/');
//structure array would have sequence of folders and subfolders you'd have to create.
我保存了正则表达式here的演示。随意玩它并修改它以满足您的需求。我使用的正则表达式/folder\='([a-z,A-Z,0-9,\/]*)'/g
基本上查找字符串"folder"
,后跟字母数字或正斜杠(文件夹结构也可以包含其他内容,您可以在[]
中定义它。我环绕我们需要访问此路径的()
文件夹路径。结尾处的标记g
表示搜索是全局的。您还可以添加标记i
来进行匹配不区分大小写.javascript中正则表达式的良好起点是MDN docs