ASPjson 中的嵌套数组
Nested Arrays in ASPjson
使用https://www.aspjson.com/解析写入JSON
我有一个组织的数据结构。
这些信息之一是他们的物理位置。每个位置可以有多个房间。
但是当我尝试编写代码以在每个位置项中创建房间时,出现错误:Object required: 'JSON.data(...)
.
这是我到目前为止成功编写的代码:
{
"locations": [{
"locationid": 524,
"locationname": "test building"
},
{
"locationid": 525,
"locationname": " building 1"
},
{
"locationid": 526,
"locationname": "test building 2"
},
{
"locationid": 527,
"locationname": "test building 3"
},
]
}
我想做的是在每个位置项中创建一个“房间”集合,就像下面这样,但是在尝试创建第二个嵌套房间数组时出现上述错误。 (见下面我的代码)
{
"locationid": 527,
"locationname": "test building 3",
"rooms" :[
{
"roomid": 111,
"roomname": "room 1 "
},
{
"roomid": 222,
"roomname": "room 2"
},
]
},
// additional locations follow ...
我当前的代码:
.Add "locations", JSON.Collection()
With JSON.data("locations")
.Add 0, JSON.Collection()
With .item(0)
.Add "locationid", 111
.Add "locationname", "location 1"
.Add "rooms", JSON.Collection()
With JSON.data("rooms") /// this is where I get the error.
.Add 0, JSON.Collection()
With .item(0)
.Add "roomid", 1
.Add "roomname", "room1"
end with
.Add 1, JSON.Collection()
With .item(1)
.Add "roomid", 2
.Add "roomname", "room2"
end with
end with
end with
end with
您需要遵循对象的结构 JSON.data("rooms")
将不存在,因为 JSON.data()
正在从 JSON 结构的根读取。添加 rooms
集合后,您需要从该实例开始工作,因为当前 .Item
实例是添加 rooms
集合的上下文。所以这条线应该是;
With .Item("rooms")
不是您问题的直接答案,但值得深思。
将 json2.js 添加到 ASP 页面后:
<script runat="server" language="JScript" src="json2.js"></script>
不再需要弯着腰去工作JSON;你真的只需要写下来。
<script runat="server" language="JScript">
var data = {
"locations": [{
"locationid": 526,
"locationname": "test building 2"
},
{
"locationid": 527,
"locationname": "test building 3"
}
]};
for (var i = 0; i < data.locations.length; i++) {
data.locations[i].rooms = {
"rooms": [{
"roomid": 111,
"roomname": "room 1"
},
{
"roomid": 222,
"roomname": "room 2"
}]
};
}
Response.Write(JSON.stringify(data, null, 2));
</script>
JScript 块和 VBScript 块可以在同一页面中共存。他们甚至可以调用彼此的功能。在 JScript 块中做 JS 语法容易的事情,在 VBScript 块中做 VB 语法容易的事情。
使用https://www.aspjson.com/解析写入JSON
我有一个组织的数据结构。
这些信息之一是他们的物理位置。每个位置可以有多个房间。
但是当我尝试编写代码以在每个位置项中创建房间时,出现错误:Object required: 'JSON.data(...)
.
这是我到目前为止成功编写的代码:
{
"locations": [{
"locationid": 524,
"locationname": "test building"
},
{
"locationid": 525,
"locationname": " building 1"
},
{
"locationid": 526,
"locationname": "test building 2"
},
{
"locationid": 527,
"locationname": "test building 3"
},
]
}
我想做的是在每个位置项中创建一个“房间”集合,就像下面这样,但是在尝试创建第二个嵌套房间数组时出现上述错误。 (见下面我的代码)
{
"locationid": 527,
"locationname": "test building 3",
"rooms" :[
{
"roomid": 111,
"roomname": "room 1 "
},
{
"roomid": 222,
"roomname": "room 2"
},
]
},
// additional locations follow ...
我当前的代码:
.Add "locations", JSON.Collection()
With JSON.data("locations")
.Add 0, JSON.Collection()
With .item(0)
.Add "locationid", 111
.Add "locationname", "location 1"
.Add "rooms", JSON.Collection()
With JSON.data("rooms") /// this is where I get the error.
.Add 0, JSON.Collection()
With .item(0)
.Add "roomid", 1
.Add "roomname", "room1"
end with
.Add 1, JSON.Collection()
With .item(1)
.Add "roomid", 2
.Add "roomname", "room2"
end with
end with
end with
end with
您需要遵循对象的结构 JSON.data("rooms")
将不存在,因为 JSON.data()
正在从 JSON 结构的根读取。添加 rooms
集合后,您需要从该实例开始工作,因为当前 .Item
实例是添加 rooms
集合的上下文。所以这条线应该是;
With .Item("rooms")
不是您问题的直接答案,但值得深思。
将 json2.js 添加到 ASP 页面后:
<script runat="server" language="JScript" src="json2.js"></script>
不再需要弯着腰去工作JSON;你真的只需要写下来。
<script runat="server" language="JScript">
var data = {
"locations": [{
"locationid": 526,
"locationname": "test building 2"
},
{
"locationid": 527,
"locationname": "test building 3"
}
]};
for (var i = 0; i < data.locations.length; i++) {
data.locations[i].rooms = {
"rooms": [{
"roomid": 111,
"roomname": "room 1"
},
{
"roomid": 222,
"roomname": "room 2"
}]
};
}
Response.Write(JSON.stringify(data, null, 2));
</script>
JScript 块和 VBScript 块可以在同一页面中共存。他们甚至可以调用彼此的功能。在 JScript 块中做 JS 语法容易的事情,在 VBScript 块中做 VB 语法容易的事情。