Zapisałem plik JSON w moim systemie lokalnym i utworzyłem plik JavaScript, aby odczytać plik JSON i wydrukować dane. Oto plik JSON:
{"resource":"A","literals":["B","C","D"]}
Powiedzmy, że jest to ścieżka do pliku JSON: /Users/Documents/workspace/test.json
.
Czy ktoś mógłby mi pomóc w napisaniu prostego fragmentu kodu, aby odczytać plik JSON i wydrukować dane w JavaScript?
javascript
json
użytkownik 2864315
źródło
źródło
Odpowiedzi:
Nie można wykonać wywołania AJAX do lokalnego zasobu, ponieważ żądanie jest wysyłane przy użyciu HTTP.
Obejściem tego problemu jest uruchomienie lokalnego serwera WWW, podanie pliku i wywołanie AJAX do localhost.
Jeśli chodzi o pomoc w pisaniu kodu do czytania JSON, powinieneś przeczytać dokumentację dla
jQuery.getJSON()
:http://api.jquery.com/jQuery.getJSON/
źródło
python -m SimpleHTTPServer 8888
i otworzyć gohttp://localhost:8888/
w przeglądarce (Windows lub Mac).8888
jest portem i można go zmienić.python -m http.server 8888
Aby odczytać zewnętrzny lokalny plik JSON (data.json) za pomocą javascript, najpierw utwórz plik data.json:
Wymień ścieżkę pliku json w źródle skryptu wraz z plikiem javascript.
Pobierz obiekt z pliku json
Aby uzyskać więcej informacji, zobacz to odniesienie .
źródło
data.json
powyższa przykładowa treść nie przechodzi sprawdzania poprawności: jsonlint.com, ponieważ tak naprawdę jest JavaScript. Usunięcie pojedynczych cudzysłowów zmieniłoby go w czysty JavaScript.JSON.parse
nie jest obsługiwany w niektórych starszych przeglądarkach (patrząc na ciebie IE). Zobacz tabelę kompatybilności przeglądarki MDN dlawindow.JSON
.data
. Jeśli usunąłeś cudzysłowy z całego jsonadata.json
, nie musiałbyś nawet używaćJSON.parse
. Pytanie brzmi: jak załadować plik JSON, a nie jak na stałe zakodować JSON w innym pliku javascript, a następnie załadować go.JSON.parse(window.data);
zapewniłoby lepszą Informacyjnymscope
odata
zmiennej.Ładowanie
.json
pliku z dysku twardego jest operacją asynchroniczną, dlatego należy określić funkcję wywołania zwrotnego, która ma zostać wykonana po załadowaniu pliku.Funkcja ta działa również na ładowanie
.html
lub.txt
plików poprzez nadpisanie parametr typu MIME"text/html"
,"text/plain"
etc.źródło
rawFile.responseType = 'json';
automatyczne analizowanie obiektu json, po prostu upewnij się, że przekazałeś gorawFile.response
zamiastrawFile.responseText
do wywołania zwrotnego.Korzystając z Node.js lub używając przeglądarki wymaganej.js, możesz po prostu:
Uwaga: plik jest ładowany raz, kolejne wywołania wykorzystają pamięć podręczną.
źródło
'utf8'
argumentreadFileSync
: to powoduje, że nie zwracaBuffer
(choćJSON.parse
może to obsłużyć), ale ciąg znaków. Tworzę serwer, aby zobaczyć wynik ...localhost:3030/get/33
, poda on szczegóły związane z tym identyfikatorem .... i czytasz także z nazwy. Mój plik json ma nazwy similar z tym kodem, możesz uzyskać szczegółowe informacje o jednej nazwie .... i nie wydrukował wszystkich nazw similarźródło
Korzystanie z interfejsu Fetch API jest najłatwiejszym rozwiązaniem:
Działa idealnie w przeglądarce Firefox, ale w przeglądarce Chrome musisz dostosować ustawienia zabezpieczeń.
źródło
Jak wiele osób wspomniało wcześniej, nie działa to przy użyciu połączenia AJAX. Jest jednak na to sposób. Za pomocą elementu wejściowego możesz wybrać swój plik.
Wybrany plik (.json) musi mieć następującą strukturę:
Następnie możesz odczytać plik za pomocą JS z FileReader ():
źródło
W zależności od przeglądarki możesz uzyskać dostęp do lokalnych plików. Ale to może nie działać dla wszystkich użytkowników Twojej aplikacji.
Aby to zrobić, możesz wypróbować instrukcje tutaj: http://www.html5rocks.com/en/tutorials/file/dndfiles/
Po załadowaniu pliku możesz odzyskać dane, używając:
źródło
Jeśli używasz plików lokalnych, dlaczego nie po prostu spakować dane jako obiekt js?
data.js
Bez XMLHttpRequests , bez parsowania, wystarczy użyć
MyData.resource
bezpośrednioźródło
Bardzo prosty.
Zmień nazwę pliku json na „.js” zamiast na „.json”.
Postępuj więc normalnie.
Jednak tylko dla informacji, zawartość mojego jsona wygląda jak wycinek poniżej.
źródło
Możesz go zaimportować jak moduł ES6;
źródło
Wystarczy użyć $ .getJSON, a następnie $ .each, aby iterować parę Klucz / wartość. Przykład treści dla pliku JSON i kodu funkcjonalnego:
źródło
Możesz użyć metody XMLHttpRequest ():
Możesz zobaczyć odpowiedź myObj za pomocą instrukcji console.log (skomentowane).
Jeśli znasz AngularJS, możesz użyć $ http:
Jeśli plik znajduje się w innym folderze, podaj pełną ścieżkę zamiast nazwy pliku.
źródło
Ponieważ masz aplikację internetową, możesz mieć klienta i serwer.
Jeśli masz tylko przeglądarkę i chcesz odczytać lokalny plik z javascript, który jest uruchomiony w przeglądarce, oznacza to, że masz tylko klienta. Ze względów bezpieczeństwa przeglądarka nie powinna umożliwiać wykonywania takich czynności.
Jednak, jak wyjaśnił powyżej Lauhub, wydaje się to działać:
http://www.html5rocks.com/en/tutorials/file/dndfiles/
Innym rozwiązaniem jest skonfigurowanie gdzieś na twoim komputerze serwera WWW (małego w Windowsie lub małpiego w Linuksie), a przy pomocy biblioteki XMLHttpRequest lub D3, zażądaj pliku z serwera i przeczytaj go. Serwer pobierze plik z lokalnego systemu plików i poda go tobie przez Internet.
źródło
Podobało mi się to, co Stano / Meetar skomentował powyżej. Używam go do odczytu plików .json. Rozszerzyłem ich przykłady za pomocą Promise. Oto plunker na to samo. https://plnkr.co/edit/PaNhe1XizWZ7C0r3ZVQx?p=preview
Odczyt JSON może zostać przeniesiony do innej funkcji, dla DRY; ale przykład tutaj bardziej pokazuje, jak korzystać z obietnic.
źródło
Musisz utworzyć nową instancję XMLHttpRequest i załadować zawartość pliku json.
Ta wskazówka działa dla mnie ( https://codepen.io/KryptoniteDove/post/load-json-file-locally-using-pure-javascript ):
źródło
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https
. Możesz użyć json2js do konwersji dowolnego pliku JSON na .JS.Jednym prostym obejściem jest umieszczenie pliku JSON na serwerze działającym lokalnie. w tym celu z terminala przejdź do folderu projektu i uruchom serwer lokalny na jakimś numerze portu, np. 8181
Następnie przeglądanie do http: // localhost: 8181 / powinno wyświetlić wszystkie twoje pliki, w tym JSON. Pamiętaj, aby zainstalować Python, jeśli jeszcze go nie masz.
źródło
Jeśli możesz uruchomić lokalny serwer WWW (jak sugerował Chris P powyżej) i możesz użyć jQuery, możesz spróbować http://api.jquery.com/jQuery.getJSON/
źródło
Możesz użyć D3 do obsługi wywołania zwrotnego i załadować lokalny plik JSON
data.json
w następujący sposób:źródło
Wziąłem doskonałą odpowiedź Stano i złożyłem ją w obietnicy. Może to być przydatne, jeśli nie masz opcji takiej jak węzeł lub paczka internetowa, na której można polegać, aby załadować plik json z systemu plików:
Możesz to tak nazwać:
źródło
Jeśli więc planujesz użyć „Apache Tomcat” do hostowania pliku JSON,
1> Po uruchomieniu serwera sprawdź, czy serwer Apache Tomcat jest uruchomiony, przechodząc do tego adresu URL: „localhost: 8080” -
2> Następnie przejdź do folderu „webapps” - „C: \ Program Files \ Apache Software Foundation \ Tomcat 8.5 \ webapps”. I utwórz folder projektu lub skopiuj folder projektu.
3> Wklej tam swój plik json.
4> I to wszystko. Gotowe! Wystarczy przejść do - „ http: // localhost: 8080 / $ nazwa_projektu $ / $ jsonFile_name $ .json”
źródło