简体   繁体   中英

Multidimensional array gotten from values in JSON file in JavaScript, using Object.keys

Based on the question https://pt.stackoverflow.com/questions/323738/como-incluir-arquivo-json-dentro-de-um-js (in Portuguese), but he does not have an array and I have an array. I applied that and the variables were undefined due to a lack of an array that he did not.

You can test using to run the preview.

I also tried to apply the questions:

  1. get size of json object
  2. Multidimensional array from JSON object

    • Firstly in the HTML file:
  <p id="name">Name 1</p>
  <p id="age">Age 1</p>
  <p id="name">Name 2</p>
  <p id="age">Age 2</p>
  <p id="name">Name 3</p>
  <p id="age">Age 3</p>
  <p id="name">Name 4</p>
  <p id="age">Age 4</p>
  <p id="name">Name 5</p>
  <p id="age">Age 5</p>
  • JSON:
{
  "people": 
  [
    {
      "id": 0,
      "name": "Person Name 0",
      "age": 15
    },
    {
      "id": 1,
      "name": "Person Name 1",
      "age": 25
    },
    {
      "id": 2,
      "name": "Person Name 2",
      "age": 35
    },
    {
      "id": 3,
      "name": "Person Name 3",
      "age": 45
    },
    {
      "id": 4,
      "name": "Person Name 4",
      "age": 55
    },
    {
      "id": 5,
      "name": "Person Name 5",
      "age": 60
    }
  ]
}
  • Based on that question in Portuguese like:
function readTextFile(file, callback) {
  var rawFile = new XMLHttpRequest();
  rawFile.overrideMimeType("application/json");
  rawFile.open("GET", file, true);
  rawFile.onreadystatechange = function() {
      if (rawFile.readyState === 4 && rawFile.status == "200") {
          callback(rawFile.responseText);
      }
  }
  rawFile.send(null);
}

readTextFile("../json/people.json", function(text)
{
  var people = JSON.parse(text);

  var name = document.getElementById('name');
  name.innerHTML = people.name;

  var age = document.getElementById('age');
  age.innerHTML = people.age;

  console.log(people);


});
  • Or using Object.keys , like:
readTextFile("../json/people.json", function(text){
  var people = JSON.parse(text);

  var name = document.getElementById('name');
  name.innerHTML = Object.keys(people.name).length;

  var age = document.getElementById('age');
  age.innerHTML = Object.keys(people.age).length;

  console.log(people);


});

 function readTextFile(file, callback) { var rawFile = new XMLHttpRequest(); rawFile.overrideMimeType("application/json"); rawFile.open("GET", file, true); rawFile.onreadystatechange = function() { if (rawFile.readyState === 4 && rawFile.status == "200") { callback(rawFile.responseText); } } rawFile.send(null); } readTextFile("https://pastebin.com/raw/CzxURs8y", function(text) { var people = JSON.parse(text); var name = document.getElementById('name'); name.innerHTML = people.name; var age = document.getElementById('age'); age.innerHTML = people.age; console.log(people); });
 <p id="name">Name 1</p> <p id="age">Age 1</p> <p id="name">Name 2</p> <p id="age">Age 2</p> <p id="name">Name 3</p> <p id="age">Age 3</p> <p id="name">Name 4</p> <p id="age">Age 4</p> <p id="name">Name 5</p> <p id="age">Age 5</p>

fetch("../json/people.json")
    .then(r=>r.json())
    .then(json=>{
        const nameElms = Array.from(document.querySelectorAll("[id='name']"));
        const ageElms = Array.from(document.querySelectorAll("[id='age']"));
        nameElms.forEach((n,i)=>{
            const person = json.people[i];
            n.textContent = person.name;
        })
        ageElms.forEach((n,i)=>{
            const person = json.people[i];
            n.textContent = person.age;
        })
    })

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM