nodejs pertanyaan json bersarang

WBOY
Lepaskan: 2023-05-23 19:59:06
asal
428 orang telah melayarinya

Dalam projek dengan pemisahan bahagian hadapan dan bahagian belakang, selalunya perlu bagi bahagian hadapan untuk menghantar data json ke bahagian belakang, dan bahagian belakang memproses data melalui operasi json dan kemudian mengembalikannya kepada bahagian hadapan. Dalam proses ini, ia melibatkan pertanyaan data json dan pertanyaan bersarang, yang juga merupakan salah satu operasi biasa nodejs.

Dalam nodejs, menggunakan objek JSON boleh beroperasi dengan mudah pada data json. Berikut akan memperkenalkan cara melaksanakan pertanyaan bersarang json dalam nodejs.

Andaikan terdapat data json berikut:

{
  "name": "Tom",
  "age": 20,
  "address": {
    "province": "Guangdong",
    "city": "Shenzhen",
    "district": "Futian"
  },
  "skills": [
    {
      "name": "Java",
      "level": "Expert"
    },
    {
      "name": "JavaScript",
      "level": "Intermediate"
    }
  ]
}
Salin selepas log masuk

Andaikan kita ingin menanyakan maklumat bandar dalam alamat Tom, kita boleh menggunakan kod berikut:

const json = {...}; // 假设json数据如上

const city = json.address.city;
console.log(city); // Shenzhen
Salin selepas log masuk

Dalam perkara di atas kod, kami lulus json.address.city boleh terus mendapatkan maklumat bandar.

Andaikan kami juga ingin menanyakan nama kemahiran kemahiran pertama Tom, anda boleh menggunakan kod berikut:

const json = {...}; // 假设json数据如上

const skillName = json.skills[0].name;
console.log(skillName); // Java
Salin selepas log masuk

Dalam kod ini, kami menggunakan pertanyaan bersarang untuk mendapatkan kemahiran pertama Tom kemahiran A nama. Mula-mula gunakan json.skills untuk mendapatkan atribut skills Tom, kemudian gunakan [0] untuk mendapatkan kemahiran pertama, dan akhirnya gunakan .name untuk mendapatkan nama kemahiran.

Tetapi apakah yang perlu kita lakukan jika kita tidak mengetahui struktur khusus data json, atau perlu membuat pertanyaan berdasarkan input pengguna?

Kami boleh menggunakan rekursi untuk melaksanakan pertanyaan traversal mendalam pada data json. Berikut ialah contoh penggunaan rekursi untuk menanyakan json:

function searchJson(json, targetKey, targetValue) {
  for (let key in json) {
    if (typeof json[key] === 'object') {
      searchJson(json[key], targetKey, targetValue);
    } else {
      if (key === targetKey && json[key] === targetValue) {
        console.log(json);
      }
    }
  }
}
Salin selepas log masuk

Fungsi ini menerima tiga parameter, iaitu data json, nama atribut sasaran dan nilai atribut sasaran. Di dalam fungsi, gunakan gelung for untuk melakukan pertanyaan traversal mendalam pada data json Jika nilai atribut ialah objek, ia akan dilalui secara rekursif nama dan sama ada nilai atribut adalah sama dengan nilai atribut sasaran Jika ia sepadan, ia akan dicetak objek json.

Sebagai contoh, jika kita ingin menanyakan semua objek bernama Tom dalam json, kita boleh menggunakan kod berikut:

searchJson(json, 'name', 'Tom');
Salin selepas log masuk

Kod ini akan merentasi data json secara mendalam dan mengembalikan semua objek bernama Tom. objek.

Ringkasan:

Memanipulasi data json dalam nodejs ialah operasi yang sangat biasa. Dalam pembangunan sebenar, kita boleh memilih kaedah yang berbeza untuk mengendalikan dan memproses data json mengikut situasi tertentu.

Atas ialah kandungan terperinci nodejs pertanyaan json bersarang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!