嵌套类的Json对象

时间:2013-11-20 12:40:49

标签: javascript jquery json

我想在javascript / jquery中创建一个json对象。对于这个A类,我想要它的json对象。

Class A
{
string test1;
B b1;
}

Class B
{
string test2;
List< C> collectionOfCType;
}

Class C
{
  int h;int w;
}

在我的js- 我能够获得具有A的test1值的json对象,但是b1值显示为undefined。

var A=
    {
        "test1": "abc",
        "b1": B
    }

var B =
    {
        "test2": "def",
        ... so on ..
     }

请帮忙!

3 个答案:

答案 0 :(得分:3)

您需要更改顺序,因为当您声明var A时,变量B甚至没有定义

var B =
    {
        "test2": "def",
        ... so on ..
     }

var A=
    {
        "test1": "abc",
        "b1": B
    }

答案 1 :(得分:0)

只是这样做:

var A=
    {
        "test1": "abc",
        "b1":
        {
            "test2": "def",
            "collectionOfCType":
                [
                    {
                        "h": 100,
                        "w": 200
                    },
                    {
                        "h": 50,
                        "w": 80
                    }
                ]
        }
    }

答案 2 :(得分:0)

这是建模和调试的方法:

我将代码封装在函数范围内,因此无法踩到全局变量ABC

还添加了异常报告,以便在播放代码更改时捕获一些语法错误。

当您移动声明的顺序时,您会发现您可以获得部分初始化的数据结构,正如@Guilherme在我之前指出的那样。

此外,在JavaScript中不需要引用属性,JSON.stringify将为您执行此操作。

<强>代码

(function() {
    try {
        var C = {
            h: 4,
            w: 3
        };
        var cArray = [
            C, 
            C, 
            C];
        var B = {
            test2: "def",
            arrayOfC: cArray
        };
        var A = {
            test1: "abc",
            b1: B
        };
        console.log(JSON.stringify(A, null, 2));
        // window.alert(JSON.stringify(A, null, 2));
    } catch (exception) {
        console.error(exception.stack);
    }
})();

<强>输出

{
  "test1": "abc",
  "b1": {
    "test2": "def",
    "arrayOfC": [
      {
        "h": 4,
        "w": 3
      },
      {
        "h": 4,
        "w": 3
      },
      {
        "h": 4,
        "w": 3
      }
    ]
  }
}