如何使用javascript将字符串转换为json?(像A//a1、A//a2、A//a3//a31..)
如何使用javascript或jQuery将字符串转换为JSON?我想了一整天,但我没有一个好主意 此任务是在客户端(ASP.Net)中动态创建treeview。我的想法是将字符串转换为对象并转换为JSON类型。(String->object->JSON)我试过了,但是日子一去不复返了。像如何使用javascript将字符串转换为json?(像A//a1、A//a2、A//a3//a31..),javascript,json,Javascript,Json,如何使用javascript或jQuery将字符串转换为JSON?我想了一整天,但我没有一个好主意 此任务是在客户端(ASP.Net)中动态创建treeview。我的想法是将字符串转换为对象并转换为JSON类型。(String->object->JSON)我试过了,但是日子一去不复返了。像A->a3->a31这样再构造2个深度是很困难的 字符串是 var sString = "A//a1,A//a2,A//a3//a31,A//a3//a32,B,C//c1,C//c2"; JSON格式是
A->a3->a31
这样再构造2个深度是很困难的
字符串是
var sString = "A//a1,A//a2,A//a3//a31,A//a3//a32,B,C//c1,C//c2";
JSON格式是
{
“标题”:“A”,
“密钥”:“1”,
“文件夹”:正确,
“儿童”:[{
“标题”:“a1”,
“键”:“2”
}, {
“标题”:“a2”,
“键”:“3”
}, {
“标题”:“a3”,
“密钥”:“4”,
“文件夹”:正确,
“儿童”:[{
“标题”:“a31”,
“键”:“5”
}...
}]
}
我相信这可以在没有递归的情况下完成:
var string=“A//a1、A//a2、A//a3//a31、A//a3//a32、B、C//c1、C//c2”;
//扎根
var root=string.split(',');
//我们将把它附加到每个节点,并使其不断增加
var-key=1;
//最终结果将出现在这个对象中
var结果=[];
//通过循环找到根
根.forEach(函数(根){
//把所有的孩子都带走
var items=root.split('/');
var父项=结果;
//循环浏览可用的子项
项目。forEach(功能(项目,i){
//查找树中是否存在当前项
var child=getChild(父项,项);
如果(!child){
儿童={
标题:项目,
钥匙:钥匙++
}
//这将确保当前节点仅为文件夹
//如果有更多的孩子
如果(i
console.log(JSON.stringify(解析(“A//a1,A//a2,A//a3//a31,A//a3//a32,B,C//c1,C//c2”),null,2));
其结果是:
[
{
"title": "A",
"key": 1,
"children": [
{
"title": "a1",
"key": 2
},
{
"title": "a2",
"key": 3
},
{
"title": "a3",
"key": 4,
"children": [
{
"title": "a31",
"key": 5
},
{
"title": "a32",
"key": 6
}
],
"folder": true
}
],
"folder": true
},
{
"title": "B",
"key": 7
},
{
"title": "C",
"key": 8,
"children": [
{
"title": "c1",
"key": 9
},
{
"title": "c2",
"key": 10
}
],
"folder": true
}
]
尝试下面的代码。我使用关联数组存储已处理的文件夹,以便更快地查找 我希望它能帮助你
var sString=“A//a1,A//a2,A//a3//a31,A//a3//a32,B,C//c1,C//c2”;
var sArr=sString.split(“,”;//我们将用逗号分割它,以便可以遍历它的项。
var output=[];//最终结果将存储在此处。
var hash={};//它用于跟踪itemObjectect的位置,以便更快地查找。
var counter=1;//其值将用于分配给键;
对于(变量i=0;i console.log(JSON.stringify(output,null,2));
不是对您的问题的直接回答,但可能会给您一些想法。“递归”是这里的关键词。您是想将JSON转换为该字符串格式,还是相反?这很混乱,因为两者都是字符串。@Rorymcrossan“将字符串转换为JSON”让我觉得OP想要转换“A//a1”串成一个JSON字符串。这也是我的想法,但是我只是想仔细检查一下。@安德烈亚斯,我不会认为这种区分是有用的,因为OP格式的格式是有效的。JSON一旦被严格化。这是黄金。很好。非常感谢。我明天会尝试它。我的区域现在是晚上,我现在不能做。谢谢!@ Chyyjang-根据您的评论,我已经更改了代码以避免使用箭头函数。@31piy它正在工作!谢谢!但我不希望此..!每个节点分开..我希望'A//a1,A//a2'转换为'A//a1,a2',然后转换为JSON类型..@cherryJang--答案与您在帖子中提到的JSON表示形式相匹配。如果您有不同的要求,请将其作为新任务发布ion.非常感谢!我明天会试试!我的区域现在是晚上,我现在不能做。谢谢!非常感谢!我现在试过了..但我有错误..!我的标签是“T1a//Ch1//OP01,T1b//Ch1/
[
{
"title": "A",
"key": 1,
"children": [
{
"title": "a1",
"key": 2
},
{
"title": "a2",
"key": 3
},
{
"title": "a3",
"key": 4,
"children": [
{
"title": "a31",
"key": 5
},
{
"title": "a32",
"key": 6
}
],
"folder": true
}
],
"folder": true
},
{
"title": "B",
"key": 7
},
{
"title": "C",
"key": 8,
"children": [
{
"title": "c1",
"key": 9
},
{
"title": "c2",
"key": 10
}
],
"folder": true
}
]