错误:未捕获TypeError:无法读取未定义的属性“ city”,并且如何在JavaScript中的对象键中包含破折号?

时间:2018-12-11 09:42:56

标签: javascript

我正在尝试使用json文件。 此代码可以在我的代码上正常工作

 console.log(resp);

这是控制台的结果

{Result: {…}}
Result:
Code: "00"
city: Array(18)
0: {cityname: "강원도", citycount: "146"}
1: {cityname: "경기도", citycount: "1055"}
2: {cityname: "경상남도", citycount: "303"}

但这不起作用

  console.log(itemNm2);
  console.log(dataV);

这是错误!

  

未捕获的TypeError:无法读取未定义的属性“ city”

原始代码也具有类似“城市名称”,“城市计数”的变量

但是效果不好。我认为是因为破折号?所以我删除了破折号。

如何解决此问题?谢谢!

这是我的完整代码:

$.ajax({
    url: 'js/map.json',
    type: 'GET',
    dataType: 'json',
    success: function (resp) {
        console.log(resp);
        var options = {
            toolTip : {
                use : {
                    local : true
                },
                className : 'tip',
                position : {
                    x : 0,
                    y : -10
                }
            },
            data: {
                data: [
                    {locname: '', listshrs: ''}
                ],
        localOption: 'locname',
        use : 'listshrs'
            }
        };
        var rows = resp.Result[1].City;
        if (rows) {
            var representativeRow;
            for (i = 0; i < 2; i++) {
                representativeRow = rows[i];
                itemNm2 = representativeRow.cityname;
                dataV = representativeRow.citycount;
                console.log(itemNm2);
                console.log(dataV);
                options.data.data.push({locname: itemNm2, listshrs: dataV});
            }


            korea = webponent.visual.korea.init($(".korea"), style, options);

        }


    }, error: function (xhr, status, error) {
        alert("err")
    }
});

这是json的示例!

{
  "Result": {
    "Code": "00",
    "City": [
      {
        "city-name": "강원도",
        "city-count": "146"
      },
      {
        "city-name": "경기도",
        "city-count": "1055"
      }
    ]
  }
}

2 个答案:

答案 0 :(得分:0)

尝试一下:

itemNm2 = representativeRow["city-name"];
dataV = representativeRow["city-count"];

答案 1 :(得分:0)

根据我在示例JSON和代码中看到的内容,您正在尝试访问resp.Result[1].City,但是resp.Result不是数组。 代替:

var rows = resp.Result[1].City;

您必须这样做:

var rows = resp.Result.City;

此外,如果必须在JSON对象中使用破折号,请参见Charis Theo的答案。