javascript跳过第一级递归的东西

时间:2012-02-22 11:05:09

标签: javascript json recursion

我正在将JSON对象读入正常的js对象。有一个名为Style的类可以包含样式(在数组中)并且具有名称和值。一些不同的对象可以包含样式(也作为数组)

现在我创建了一个独立函数,它返回一个样式数组,如下所示:

function getStylesFromJson(jsonObj)
{
this.complete = false;
var ret = new Array();

for (var style in jsonObj)
    {
        temp = new Style();
        temp.loadFromJson(jsonObj[style]);
        ret.push(temp);
        document.write("xxxxxxx<br/>");
        document.write(jsonObj[style].sName);
        document.write(jsonObj[style].sValue);
        document.write("<br/>");
        document.write(temp.name);
        document.write(temp.value);
        document.write("<br/>yyyyy");
        document.write("<br/>");

        while (!temp.loadFromJson.complete)
        {
            var a = 1; //waste some time
        }
    }

this.complete = true;
return ret;
}

在Style类中我创建了函数:

this.loadFromJson = function(jsonObj)
{
    this.loadFromJson.complete  = false;
    this.name                   = jsonObj.sName;
    this.value                  = jsonObj.sValue;   
    this.styles = getStylesFromJson(jsonObj.aStyles);   
    this.loadFromJson.complete  = true;
}

这是一个JSON的snippit,它被执行以使传递给getStylesFromJson的对象:

{
    "aStyles": {
        "font": {
            "sValue": "",
            "sName": "font",
            "aStyles": {
                "size": {
                    "sValue": "2000000",
                    "sName": "size",
                    "aStyles": []
                }
            }
        },
        "fill": {
            "sValue": "",
            "sName": "fill",
            "aStyles": {
                "bill": {
                    "sValue": "blue",
                    "sName": "bill",
                    "aStyles": []
                },
                "mill": {
                    "sValue": "blue",
                    "sName": "mill",
                    "aStyles": []
                }
            }
        }
    }
}

这里是getStylesFromJson中document.write的输出:

font
colorpurple
yyyyy
xxxxxxx
colorred
colorred
yyyyy
xxxxxxx
fill
colorred
yyyyy
xxxxxxx
size12
size12
yyyyy

我想要的是从json构造一个完整的对象层次结构,但它似乎忽略了结构的顶层。我没有得到任何js错误,只是像“字体”和“填充”这样的东西被遗漏了,我不知道为什么。

任何想法?

以下是评论者的更多信息: 我确实使用过JSON.parse,但据我所知,没有办法解析某些东西,以确保它最终成为其他地方指定的类的自定义对象。我需要获取一个JSON字符串,而不是包含一个递归数据结构,并将其转换为具有某些功能的对象层次结构。有没有办法做到这一点?

这里有一些关于单词和x和y东西含义的解释: 一个名为jsonObj的jsonised对象被传递给一个函数,然后使用jsonObj创建一个Style。 “xxxxx”标记单次迭代输出的开始。输出JSON样式的下一个名称和值(无空格)。该值可以为空。接下来输出从JSON样式信息构造的Style的名称和值。它应该是相同的但不是。

xxxx
colorpurple
colorpurple
yyyy

意味着正确构造名称“颜色”和紫色值

xxxx
fill
colorred
yyyy

让我沮丧

0 个答案:

没有答案