Saya telah menyimpan file JSON di sistem lokal saya dan membuat file JavaScript untuk membaca file JSON dan mencetak data. Ini adalah file JSON:
{"resource":"A","literals":["B","C","D"]}
Katakanlah ini adalah path dari file JSON: /Users/Documents/workspace/test.json
.
Adakah yang bisa membantu saya dalam menulis sepotong kode sederhana untuk membaca file JSON dan mencetak data dalam JavaScript?
javascript
json
pengguna2864315
sumber
sumber
Jawaban:
Anda tidak dapat membuat panggilan AJAX ke sumber daya lokal karena permintaan dibuat menggunakan HTTP.
Solusinya adalah dengan menjalankan server web lokal, sajikan file dan buat panggilan AJAX ke localhost.
Dalam hal membantu Anda menulis kode untuk membaca JSON, Anda harus membaca dokumentasi untuk
jQuery.getJSON()
:http://api.jquery.com/jQuery.getJSON/
sumber
python -m SimpleHTTPServer 8888
dan bukahttp://localhost:8888/
di browser Anda (Windows atau Mac).8888
adalah port dan dapat diubah.python -m http.server 8888
Untuk membaca file JSON lokal eksternal (data.json) menggunakan javascript, pertama buat file data.json Anda:
Sebutkan jalur file json di sumber skrip bersama dengan file javascript.
Dapatkan Objek dari file json
Untuk informasi lebih lanjut, lihat referensi ini .
sumber
data.json
atas tidak lulus validasi: jsonlint.com karena ini benar-benar JavaScript. Menjatuhkan tanda kutip tunggal pembungkus akan mengubahnya menjadi JavaScript murni.JSON.parse
tidak didukung di beberapa browser yang lebih lama (melihat Anda IE). Lihat tabel Kompatibilitas Browser MDN untukwindow.JSON
.data
. Jika Anda menghapus kutipan string dari sekitar json didata.json
Anda bahkan tidak perlu menggunakanJSON.parse
. Pertanyaannya adalah bagaimana cara memuat file JSON bukan bagaimana cara hardcode JSON ke file javascript lain dan kemudian memuatnya.JSON.parse(window.data);
akan memberikan informasi yang lebih baikscope
daridata
variabel.Pemuatan
.json
file dari harddisk adalah operasi asinkron dan oleh karena itu perlu menentukan fungsi callback untuk dieksekusi setelah file dimuat.Fungsi ini berfungsi juga untuk memuat file
.html
atau.txt
, dengan menimpa parameter tipe mime ke"text/html"
,"text/plain"
dll.sumber
rawFile.responseType = 'json';
agar ia mem-parsing objek json secara otomatis, pastikan untuk meneruskanrawFile.response
alih-alihrawFile.responseText
ke callback.Kapan di Node.js atau saat menggunakan require.js di browser , Anda bisa melakukannya:
Perhatikan: file dimuat sekali, panggilan selanjutnya akan menggunakan cache.
sumber
'utf8'
argumen untukreadFileSync
: ini membuatnya mengembalikan bukanBuffer
(walaupunJSON.parse
bisa menanganinya), tetapi string. Saya membuat server untuk melihat hasilnya ...localhost:3030/get/33
akan memberikan detail terkait dengan id itu .... dan Anda juga membaca namanya. File json saya memiliki nama yang sama dengan kode ini, Anda bisa mendapatkan satu nama detail .... dan tidak mencetak semua nama yang samasumber
Menggunakan Fetch API adalah solusi termudah:
Ini berfungsi sempurna di Firefox, tetapi di Chrome Anda harus menyesuaikan pengaturan keamanan.
sumber
Seperti banyak orang sebutkan sebelumnya, ini tidak berfungsi menggunakan panggilan AJAX. Namun, ada cara mengatasinya. Menggunakan elemen input, Anda dapat memilih file Anda.
File yang dipilih (.json) harus memiliki struktur ini:
Kemudian Anda dapat membaca file menggunakan JS dengan FileReader ():
sumber
Bergantung pada browser Anda, Anda dapat mengakses file lokal Anda. Tetapi ini mungkin tidak berfungsi untuk semua pengguna aplikasi Anda.
Untuk melakukan ini, Anda dapat mencoba instruksi dari sini: http://www.html5rocks.com/en/tutorials/file/dndfiles/
Setelah file Anda dimuat, Anda dapat mengambil data menggunakan:
sumber
Jika Anda menggunakan file lokal, mengapa tidak hanya mengemas data sebagai objek js?
data.js
Tidak XMLHttpRequests , tidak ada parsing, cukup gunakan
MyData.resource
langsungsumber
Sangat sederhana.
Ganti nama file json Anda menjadi ".js" sebagai gantinya ".json".
Jadi ikuti kode Anda secara normal.
Namun, hanya untuk informasi, konten json saya itu terlihat seperti snip di bawah ini.
sumber
Anda dapat mengimpornya seperti modul ES6;
sumber
Cukup gunakan $ .getJSON dan kemudian $ .each untuk mengulangi pasangan kunci / nilai. Contoh konten untuk file JSON dan kode fungsional:
sumber
Anda dapat menggunakan metode XMLHttpRequest ():
Anda dapat melihat respons myObj menggunakan pernyataan console.log (dikomentari).
Jika Anda tahu AngularJS, Anda dapat menggunakan $ http:
Jika Anda memiliki file di folder yang berbeda, sebutkan path lengkap bukan nama file.
sumber
Karena Anda memiliki aplikasi web, Anda mungkin memiliki klien dan server.
Jika Anda hanya memiliki browser, dan Anda ingin membaca file lokal dari javascript yang berjalan di browser Anda, itu berarti Anda hanya memiliki klien. Demi alasan keamanan, peramban seharusnya tidak membiarkan Anda melakukan hal itu.
Namun, seperti dijelaskan lauhub di atas, ini tampaknya berhasil:
http://www.html5rocks.com/en/tutorials/file/dndfiles/
Solusi lain adalah mensetup server web Anda di suatu tempat (kecil di windows atau monyet di linux) dan dengan pustaka XMLHttpRequest atau D3, minta file dari server dan baca. Server akan mengambil file dari sistem file lokal, dan menyajikannya kepada Anda melalui web.
sumber
Saya menyukai komentar Stano / Meetar di atas. Saya menggunakannya untuk membaca file .json. Saya telah memperluas contoh mereka menggunakan Janji. Berikut adalah penyedot untuk hal yang sama. https://plnkr.co/edit/PaNhe1XizWZ7C0r3ZVQx?p=preview
Pembacaan JSON dapat dipindahkan ke fungsi lain, untuk KERING; tetapi contoh di sini lebih menunjukkan bagaimana menggunakan janji.
sumber
Anda harus membuat instance XMLHttpRequest baru dan memuat konten file json.
Tip ini berfungsi untuk saya ( https://codepen.io/KryptoniteDove/post/load-json-file-locally-using-pure-javascript ):
sumber
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https
. Anda bisa menggunakan json2js untuk mengonversi file JSON apa pun menjadi .JS.Salah satu solusi sederhana adalah dengan meletakkan file JSON Anda di dalam server yang berjalan secara lokal. untuk itu dari terminal buka folder proyek Anda dan mulai server lokal pada beberapa nomor port misalnya 8181
Kemudian menjelajah ke http: // localhost: 8181 / akan menampilkan semua file Anda termasuk JSON. Ingatlah untuk menginstal python jika Anda belum memilikinya.
sumber
Jika Anda dapat menjalankan server web lokal (seperti disarankan Chris P di atas), dan jika Anda dapat menggunakan jQuery, Anda dapat mencoba http://api.jquery.com/jQuery.getJSON/
sumber
Anda bisa menggunakan D3 untuk menangani panggilan balik, dan memuat file JSON lokal
data.json
, sebagai berikut:sumber
Aku mengambil jawaban Stano yang bagus dan membungkusnya dengan janji. Ini mungkin berguna jika Anda tidak memiliki opsi seperti node atau webpack untuk kembali memuat file json dari sistem file:
Anda bisa menyebutnya seperti ini:
sumber
Jadi, jika Anda berencana untuk pergi dengan "Apache Tomcat" untuk hosting file JSON Anda,
1> Setelah memulai server, pastikan Apache Tomcat Anda sudah aktif dan berjalan dengan membuka url ini: "localhost: 8080" -
2> Selanjutnya, buka folder "webapps" - "C: \ Program Files \ Apache Software Foundation \ Tomcat 8.5 \ webapps". Dan, buat folder proyek atau salin folder proyek Anda.
3> Rekatkan file json Anda di sana.
4> Dan itu saja. Kamu selesai! Cukup buka - " http: // localhost: 8080 / $ project_name $ / $ jsonFile_name $ .json"
sumber