我想在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 ..
}
请帮忙!
答案 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)
这是建模和调试的方法:
我将代码封装在函数范围内,因此无法踩到全局变量A
,B
和C
。
还添加了异常报告,以便在播放代码更改时捕获一些语法错误。
当您移动声明的顺序时,您会发现您可以获得部分初始化的数据结构,正如@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
}
]
}
}