我正在尝试解析嵌套的字符串对象以返回一个对象。
例如,给定一个字符串:
'{dog : cat, joe: { jane: cat, peanut : dog }, fat : skinny}'
我想将其转换为对象数据类型,因此返回值为:
{dog : cat, joe: { jane: cat, peanut : dog }, fat : skinny}
到目前为止代码:
function Parse(string) {
if (string[0] == '{' && string[string.length - 1] == '}') {
const inObj = string.substring(1, string.length - 1);
const arr = inObj.split(',');
const keyVal = arr.map(c => c.split(':'));
const obj = {};
for (var i = 0; i < keyVal.length; i++) {
let ele = keyVal[i];
if (ele[1].startsWith('{')) {
let string2 = ele[1];
for (var j = i + 1; i < keyVal.length; i++) {
console.log(keyVal[j]);
if (keyVal[j].endsWith('}')) {
string2 += keyVal[j];
break;
} else {
string2 += keyVal[j];
}
}
obj[ele[0]] = JSONParser(string2);
} else {
obj[ele[0]] = ele[1];
}
}
return obj;
}
}
我的逻辑流程,粗略地说:
{
开头,它将开始解析。{
和}
,
[[key,value],[key,value]]
; [[key,value],[key,value]]
。 value == '{'
然后开始为它创建一个字符串[[key,value],[key,value]]
开始迭代
{
+ 1索引的元素值。}
。JSONParse
来解析对象。如果有人可以帮助他们解析对象或者纠正我当前的逻辑,我将非常感激。