javascript和json
我将javascript与json库一起使用,遇到了一点小麻烦。以下是我的json输出:javascript和json,javascript,json,struts2,Javascript,Json,Struts2,我将javascript与json库一起使用,遇到了一点小麻烦。以下是我的json输出: { "artist": { "username": "myname", "password": "password", "portfolioName": "My Portfolio", "birthday": "2010-07-12 17:24:36.104 EDT", "firstName": "John",
{
"artist": {
"username": "myname",
"password": "password",
"portfolioName": "My Portfolio",
"birthday": "2010-07-12 17:24:36.104 EDT",
"firstName": "John",
"lastName": "Smith",
"receiveJunkMail": true,
"portfolios": [{
"entry": [{
"string": "Photos",
"utils.Portfolio": {
"name": "Photos",
"pics": [""]
}
},
{
"string": "Paintings",
"utils.Portfolio": {
"name": "Paintings",
"pics": [""]
}
}]
}]
}
}
在javascript中,我尝试访问映射中的条目,如下所示:
var portfolios = jsonObject.artist.portfolios.entry;
var portfolioCount = portfolios.length;
for ( var index = 0; index < portfolioCount; index++ )
{
var portfolio = portfolios[index];
txt=document.createTextNode("Portfolio Name: " + portfolio['string'] );
div = document.createElement("p");
div.appendChild ( txt );
console.appendChild(div);
}
var-portfolions=jsonObject.artist.portfolions.entry;
var portfolioCount=公文包长度;
对于(var索引=0;索引
但投资组合是“未定义的”。正确的方法是什么?对象中有一个数组。我相信你在寻找这个:
var portfolios = jsonObject.artist.portfolios[0].entry;
查看JSON结果<代码>组合是一个单元素数组<代码>公文包[0]是一个包含单个键的对象,
条目
,它映射到一个由两个对象组成的数组,这两个对象同时具有字符串
和utils.Portfolio
键。因此,语法jsonObject.artist.portfolions.entry
将不起作用。相反,您需要jsonObject.artist.portfolions[0].entry
如果可能,我建议更改生成这些JSON结果的任何代码,以完全删除条目
间接级别,例如:
{
"artist": {
/* ... */
"portfolios": [
{
"string": "Photos",
"utils.Portfolio": {
"name": "Photos",
"pics": [""]
}
},
{
"string": "Paintings",
"utils.Portfolio": {
"name": "Paintings",
"pics": [""]
}
}
]
}
}
然后你就可以用
var portfolios = jsonObject.artist.portfolios;
for (var i = 0, portfolio; portfolio = portfolios[i]; ++i)
{
// use portfolio variable here.
}
portfolions
属性是一个数组,因此需要使用索引来获取第一个元素:
var portfolios = jsonObject.artist.portfolios[0].entry;
您确定是公文包未定义,而不是公文包。条目?它可能不是问题的根源,但您的JSON无效。行应该是
“receiveJunkMail”:“true”,
。