如何使用角度访问 HTML 中的 JSON 数组对象?

Posted

技术标签:

【中文标题】如何使用角度访问 HTML 中的 JSON 数组对象?【英文标题】:How to access JSON array object in HTML using angular? 【发布时间】:2015-03-26 08:34:11 【问题描述】:

我有一个 JSON 文件,我想在我的 html 中显示它。但我不知道如何使用深层嵌套对象的语法。

  
  "questions": [
    
      "question": "Qw1",
      "answers": [
        
          "answers": "An1",
          "value": 25
        ,
        
          "answers": "An2",
          "value": 50
        ,
        
          "answers": "An3",
          "value": 75
        ,
        
          "answers": "An4",
          "value": 100
        
      ]
    ,
    
      "question": "Qw2",
      "answers": [
        
          "answers": "An1",
          "value": 25
        ,
        
          "answers": "An2",
          "value": 50
        ,
        
          "answers": "An3",
          "value": 75
        ,
        
          "answers": "An4",
          "value": 100
        
      ]
    
  ]

我没有尝试使用 ng-repeat,因为我需要一个一个地访问它们。

 <div class="main-content" ng-controller="QuestionCtrl">
                <div id="Content1">
                  <h1>Question 1</h1>
                  <p>questions.question[1].answer</p>
                  ...........

当然不行。我如何访问我的信息?

【问题讨论】:

【参考方案1】:

有一个working plunker

使用这个控制器:

.controller('QuestionCtrl', ['$scope', '$http', function ($scope, $http)  
  $scope.questions = [];
  $http
    .get("data.json")
    .then(function(response)
      $scope.questions = response.data.questions;
    );
]) 

正在加载您的数据,我们可以使用它

<div class="main-content" ng-controller="QuestionCtrl">
  <div id="Content1">
  <h1>Question 1</h1>
  <p>questions[0].question</p>
  <p>questions[0].answers[0]</p>
  <p>questions[0].answers[1]</p>
  </div>
</div>

或者我们可以这样使用它:

<h1>Question 1</h1>
<p>questions[0].question</p>
<h2>answer 1</h2>
<p>questions[0].answers[0].value</p>
<p>questions[0].answers[0].answers</p>
<h2>answer 2</h2>
<p>questions[0].answers[1].value</p>
<p>questions[0].answers[1].answers</p>

这将显示数字valueanswers 文本

查看here in action

【讨论】:

感谢您的努力。但不是 "answers":"An1","value":25 我怎样才能只获取它们的值? 我更新了插件 (重新打开插件) 以及答案。那应该告诉你怎么做。我们可以简单地访问 answers[0].answers 来获取文本和 answer[0].value 来获取数字......祝你好运 Tnx!我知道这很容易xD【参考方案2】:
<div class="main-content" *ngFor="let q of questions">
   <h1> q.question</h1>
    <p *ngFor="let ans of q.answers">ans.answers = ans.value </p>
</div>

【讨论】:

【参考方案3】:

questions 是数组,而不是 questions.question,并且您的 JSON 不包含 answer 属性。您是否尝试过使用正确的遍历?

questions[0].answers[0].value

应该给你25

【讨论】:

以上是关于如何使用角度访问 HTML 中的 JSON 数组对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据使用角度 7 中的键的条件检查来过滤 json 响应中的数组

无法将JSON数据访问到角度(.ts)文件中

如何使用角度 7 从对象数组中返回 userPass 的值?

如何以角度将 JSON 对象数组转换为 Observable 数组

使用数组中的数组对 JSON 进行反序列化

捕获http json body响应并转换为角度ionic5中的数组