在AngularJS中解析没有特定元素名称的JSON

时间:2015-01-03 18:01:28

标签: javascript json angularjs

我想解析Country&的JSON响应请参阅下面提到的URL。

https://gist.githubusercontent.com/mayurah/5f4a6b18b1aa8c26910f/raw/countriesToCities.json

{
"China":  [
"Guangzhou",
"Fuzhou",
"Beijing",
"Baotou",
"Hohhot",
"Guiyang",
"Yinchuan",
"Nanjing",
"Changzhou",
"Chuzhou",
"Hefei",
"Jinan",
"Qingdao",
"Harbin",
"Zhaodong",
"Taiyuan",
"Xi'an",
.
.
.
 }
 ]

我希望结果为,

  • 中国广州
  • 中国太原

我正在使用AngularJS,以下是我的controllers.js文件的一段代码。

var
apiUrl = {
    countryStateList: 'https://gist.githubusercontent.com/mayurah/5f4a6b18b1aa8c26910f/raw/countriesToCities.json'
};

countryData.controller('countryDataCtrl', ['$scope', '$http', function($scope, $http) {
$http.get(apiUrl.countryStateList).success(function(data) {
    // console.log(data);
    $scope.countryStateList = data;
});
}]);

而且,在我的HTML文件中,代码是这样的,

<ul ng-repeat="country in countryStateList">
<li>{{ STATE_NAME, COUNTRY_NAME }}</li>
</ul>
  • STATE_NAME&amp; COUNTRY_NAME仅用于显示信息。两者都必须用Angular代码替换。

问题是JSON元素名称本身就是国家名称。有人可以告诉我如何在AngularJS / Javascript中解析相同内容。

2 个答案:

答案 0 :(得分:0)

您可以从解析整个JSON开始:

var jsonObject = JSON.parse(RAW_JSON_STING);
var newJsonObject = [];

// Loop through it
for (var interator in jsonObject)
{
    for (var it = 0; it < iterator.length; it++)
    {
        newJsonObject.push(iterator[it] + ", " + iterator);
    }
}

不保证上述代码可以按预期工作。

答案 1 :(得分:0)

Ng-repeat对你的情况没用。这可以使用指令。

<datalist id="stateCountry">
    <custom-datalist-option data-array="countryStateList"></custom-datalist-option>
</datalist>

链接指令功能并使用它创建一个选项。

以下是Update Fiddle

希望这会对你有所帮助。