Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript和json_Javascript_Json_Struts2 - Fatal编程技术网

javascript和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",

我将javascript与json库一起使用,遇到了一点小麻烦。以下是我的json输出:

{
    "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”,