json没有以正确的顺序打印

时间:2016-03-05 16:45:19

标签: javascript html angularjs json

我有一个名为places.json的json文件。内容是

{
    "Europe": [
        {
            "name": "London",
            "country": "England"
        },
        {
            "name": "Paris",
            "country": "France"
        }
    ],
    "Asia": [
        {
            "name": "Delhi",
            "country": "India"
        },
        {
            "name": "Tokyo",
            "country": "Japan"
        }
    ],
    "Africa": [
        {
            "name": "CapeTown",
            "country": "SouthAfrica"
        },
        {
            "name": "Abuja",
            "country": "Nigeria"
        }
    ]
}

这只是文件的一部分。文件非常大。

现在我通过角度js获取此文件

myApp.controller('cityController', ['$scope', '$http', function ($scope, $http) {
    $http.get('places.json').success(function (data) {
        $scope.items = data;
    }).error(function (data) {
        console.log(data);
    });
}]);

然后我将我的html页面中的数据打印为

<div ng-repeat="(key,val) in items">
   <p> {{key}}</p>
   <div ng-repeat="place in val">
      <p>{{place.name}}</p>
      <p>{{place.country}}</p>
   </div>
</div>

我收到输出但输入顺序不正确。 (即)我的亚洲地区首先印有地点和欧洲等等。为什么会这样呢?如何以正确的顺序打印。

1 个答案:

答案 0 :(得分:4)

未定义对象中键的顺序。大多数浏览器按字母顺序实现它们,但它们可能按照它们想要的顺序返回。 如果您需要订购它们,则必须将它们放入一个数组中,并将每个的名称放入一个新属性(例如“name”)

来自ECMAScript Third Edition (pdf)的对象的定义:

  

4.3.3对象对象是Object类型的成员。 这是一个无序的属性集合,每个属性都包含一个基元   价值,对象或功能。存储在属性中的函数   对象称为方法。