2016-06-06 26 views
9

W jaki sposób można przeanalizować plik JSON, pobierając wszystkie jego dane i używając go w moim kodzie?Jak mogę analizować lokalny plik JSON w React js?

Próbowałem importowania pliku i po prostu starał konsolę zalogowaniu, ale wszystko to nie jest druk Object {}:

import jsonData from "./file.json"; 
console.log(jsonData); 

To właśnie moja file.json wygląda następująco:

[ 
    { 
     "id": 1, 
     "gender": "Female", 
     "first_name": "Helen", 
     "last_name": "Nguyen", 
     "email": "[email protected]", 
     "ip_address": "227.211.25.18" 
    }, { 
     "id": 2, 
     "gender": "Male", 
     "first_name": "Carlos", 
     "last_name": "Fowler", 
     "email": "[email protected]", 
     "ip_address": "214.248.201.11" 
    } 
] 

Chciałbym mieć dostęp do imienia i nazwiska każdego z komponentów i wydrukować je na stronie internetowej.

+0

Proszę wybrać poprawną odpowiedź, czy to pomogło. – fuzz

Odpowiedz

11
var data = require('../../file.json'); // forward slashes will depend on the file location 

for(var i = 0; i < data.length; i++) { 
    var obj = data[i]; 

    console.log("Name: " + obj.first_name + ", " + obj.last_name); 
} 

https://jsfiddle.net/c9wupvo6/

+0

Otrzymuję ten błąd: 'Uncaught Error: Nie można znaleźć modułu" json! ./ Sections/file.json "' chociaż jest to właściwa ścieżka. – Parkicism

+0

tak działa bez '' json! '' – Parkicism

1

Dla tych z Was, którzy również mają problemy z tym, ten kod wydawało się, że problem został rozwiązany

var jsonData = require('../../file.json'); 

class blah extends React.Component { 

render(){ 
    var data; 

    function loadJSON(jsonfile, callback) { 

     var jsonObj = new XMLHttpRequest(); 
     jsonObj.overrideMimeType("application/json"); 
     jsonObj.open('GET', "../../file.json", true); 
     jsonObj.onreadystatechange = function() { 
       if (jsonObj.readyState == 4 && jsonObj.status == "200") { 
       callback(jsonObj.responseText); 
       } 
     }; 
     jsonObj.send(null); 
    } 

    function load() { 

     loadJSON(jsonData, function(response) { 
      data = JSON.parse(response); 
      console.log(data); 
     }); 
    } 

    load(); 
} 

} 
+4

Wydaje się to nadmierne, aby uzyskać JSON w lokalnym kodzie JS, nie ma łatwiejszego rozwiązania? – Shazam

3

Miałem również problemy z uzyskaniem pusty obiekt powrotem. Nawet jeśli korzystasz z usługi require zgodnie z powyższymi sugestiami.

fetch jednak rozwiązać mój problem:

fetch('./data/fakeData.json') 
    .then((res) => res.json()) 
    .then((data) => { 
    console.log('data:', data); 
    }) 

(dzień dzisiejszy, podpora nie jest optymalna choć: http://caniuse.com/#feat=fetch)

+2

Wygląda na to, że powinien zadziałać. Ale za każdym razem, gdy go wypróbuję, otrzymuję komunikat "localhost /: 1 Uncaught" (w obietnicy) SyntaxError: nieoczekiwany token jseals

+0

fetch działał idealnie, dzięki – davidrl1000