我有一个看起来像这样的对象。
{
"class_details":{
"class_1":{student_4":"<name>","student_3":"<name>,student_2":"<name>","student_1":"<name>},
"class_2":{"student_1":"<name>},
"class_0":{student_2":"<name>","student_1":"<name>
}
}
我正在尝试使用循环迭代类,但我找不到完美的方法来完成它。
我不能做这样的事情,
for(int i=0; i < $scope.rounds.class_details.length;i++)
console.log($scope.rounds.class_details.round_[i])
所以我这样做
for(int i=0; i < $scope.rounds.class_details.length;i++)
console.log(Object.keys($scope.rounds.class_details)[i])
但是这里的课程详细信息没有按顺序排列,这在我的案例中很重要。
如果有类似于
的替代方案,那就太好了 for(int i=0; i < $scope.rounds.class_details.length;i++)
console.log($scope.rounds.class_details.round_[i])
或者是否有一种简单的方法来对JSON类详细信息进行排序。
答案 0 :(得分:1)
要按升序获取密钥,请执行以下操作:
git clone --depth 1 <repository>
这将通过获取'class_'之后的子字符串并按顺序返回您的类。你不能做一个简单的字符串比较,因为“4”&gt; “10”将返回错误的结果。
答案 1 :(得分:0)
读取数据的最简单方法就像您希望的那样: -
for(int i=0; i < $scope.rounds.class_details.length;i++)
console.log($scope.rounds.class_details["round_" + i]);
这是因为您可以通过两种方式访问对象属性: -
允许您传递动态值(即i值)
object["property" + withVariable + "Name"]
简单易读的方式,您知道该属性。
object.propertyName
答案 2 :(得分:0)
首先,修复json。注意:原始代码中缺少一些引号。
//parse to json. Assume the
//'body' is the json data received
//if there is data in body
if(body){
//parse body
var parsed_body= JSON.parse(body);
//your data
var class_details = parsed_body.class_details;
var class_2_student_1 = parsed_body.class_details.class_2.student_1;
//if you want to print json directly to the front-end,
//then Object Object may be printed out. to prevent this,
//one could use .toString() to convert Object to String.
}
else{}//do something if no data in the body
遵循这个:
{{1}}