Alat pembangun · Penukar sintaks
JSON kepada XML penukaran: elemen akar, tatasusunan dan nama teg tidak sah
· Bagaimana ia berfungsi
json xml format data
JSON boleh menjadi tatasusunan kosong dengan kekunci yang bermula dengan digit atau mengandungi ruang, tiada satu pun yang XML membenarkan. Siaran ini menerangkan keputusan yang mesti dibuat oleh penukar tentang akar, tatasusunan dan nama, supaya anda boleh meramalkan output.
Tatasusunan tanpa nama — tatasusunan JSON peringkat atas yang perlu menjadi dokumen XML berakar tunggal dan elemen pembungkus yang muncul
JSON boleh bermula dengan `[1,2]`; XML tidak boleh bermula dengan dua elemen dokumen rakan sebaya. Oleh itu ToolAcre membalut tatasusunan akar dalam nama akar yang dipilih dan menulis setiap ahli sebagai anak `<item>` berulang. Amaran itu menamakan konvensyen itu, kerana pembungkus dan nama item tidak terdapat dalam sumber.
Memilih `numbers` menghasilkan satu `<numbers>` elemen dokumen yang mengandungi dua elemen item. Penukaran adalah deterministik, tetapi bukan kanonik: sistem lain mungkin memerlukan `<number>` atau koleksi yang mengandungi atribut. Tetapkan akar dengan sengaja dan bandingkan hasilnya dengan kontrak XML yang diperlukan penerima.
XML memerlukan satu punca — sebab setiap penukaran mencipta atau meminta nama elemen akar
Dokumen XML mesti mempunyai satu elemen akar. Objek JSON dengan tepat satu kunci peringkat atas biasa boleh menggunakan kunci itu secara langsung. Objek berbilang kunci, tatasusunan, skalar atau null tidak mempunyai nama tunggal yang dibekalkan, jadi penulis melampirkannya dalam `root` melainkan pengguna memberikan nama sah yang lain.
Peraturan pembalut dilaksanakan sebelum bersiri dan muncul sebagai amaran. Ia tidak ditemui oleh skema dan tidak mendakwa bahawa `<root>` mempunyai makna kepada perkhidmatan warisan. Menamakan sampul surat adalah sebahagian daripada reka bentuk penyepaduan, manakala penukar sahaja menjamin struktur yang terbentuk dengan baik di bawah pemetaannya sendiri.
Tatasusunan tidak mempunyai XML setara — mengulangi elemen setiap item dan cara tatasusunan skalar dan tatasusunan diwakili
Tatasusunan menjadi elemen berulang. Pada akar dokumen, ahli menggunakan `<item>` di bawah pembungkus. Di dalam objek, tatasusunan yang disimpan di bawah `line` menjadi berulang `<line>` adik beradik. Tatasusunan objek mencipta elemen berulang dengan medan anak; tatasusunan bersarang tidak mempunyai nama domain dan mewarisi struktur generik yang dihasilkan oleh pembina.
Ini kehilangan perbezaan antara satu ahli tatasusunan dan skalar dengan nama elemen yang sama selepas XML-ke-JSON dibaca kemudian. XML menyediakan kejadian, bukan penanda tatasusunan bebas. Jika kardinaliti stabil penting, skema atau pemetaan aplikasi mesti membekalkannya; penyeri bersiri generik tidak boleh membuktikannya daripada nama unsur berbentuk JSON sahaja.
Kekunci yang tidak boleh menjadi nama elemen — nama bermula dengan digit, mengandungi ruang atau tanda baca, atau bermula dengan 'xml' dan cara penukar menamakan semula atau melepaskannya
Garis besar yang dicadangkan penukar boleh menamakan semula atau pelepasan aksara daripada kunci haram. ToolAcre secara jelas menolaknya. Kunci dengan ruang, satu bermula dengan digit atau sempang, atau satu yang bermula dengan huruf rizab `xml` mencetuskan `UNSUPPORTED_SHAPE` dan menamakan laluan yang menyinggung perasaan. Penamaan semula senyap akan menghasilkan XML yang tidak sepadan dengan skema yang dipersetujui.
Nama yang sah mungkin bermula dengan huruf, garis bawah atau awalan gaya ruang nama dan mungkin mengandungi digit, noktah, garis bawah, titik bertindih dan sempang selepas permulaan. Kunci atribut menggunakan `@` sahaja sebagai konvensyen JSON; nama atribut yang tinggal mesti melepasi semakan yang sama. Namakan semula kunci sumber dengan sengaja atau pilih format sasaran lain.
Kekunci yang tidak boleh menjadi nama elemen ditolak, tidak dinamakan semula atau terlepas
Nombor dan boolean disiri sebagai teks elemen, jadi jenis JSON mereka tidak lagi diisytiharkan oleh XML. Pembaca songsang lalai akibatnya mengembalikan rentetan. Null tidak mempunyai perwakilan XML di sini: ia menjadi elemen kosong, tidak dapat dibezakan daripada rentetan kosong dan penulis melaporkan berapa banyak nilai yang mengalami perubahan itu.
Ini bermakna `{ "a": null, "b": "" }` boleh menghasilkan dua elemen kosong yang dibaca semula sama. Memanggil perjalanan pergi balik itu tanpa kerugian adalah salah. Atribut, `#text` dan `#cdata` mengekalkan konvensyen struktur penukar, tetapi mereka tidak menambah sistem jenis XML umum.
Jenis menjadi teks XML, manakala null menjadi kekaburan elemen kosong yang diakui
Gunakan `{"order":{"@id":"A-7","customer":"Ada","line":[{"sku":"P1","qty":2},{"sku":"P2","qty":1}],"note":null}}`. Kekunci `order` tunggal menjadi punca, `@id` menjadi atribut, setiap objek baris menjadi `<line>` berulang dan null menjadi `<note></note>` kosong dengan amaran.
Baca kembali output dengan inferens dilumpuhkan. Id atribut, kuantiti dan nilai teks ialah rentetan dan baris ialah tatasusunan kerana ia muncul dua kali. Ini menunjukkan songsang disokong tepat sambil mendedahkan jenis null dan numerik yang hilang. Skema pesanan penerimaan mungkin menuntut nama atau pesanan lain, yang tidak disahkan oleh contoh ini.
Perkara yang tidak dilindungi ini — menghasilkan XML yang sepadan dengan XSD atau ruang nama tertentu, yang memerlukan pemetaan yang ditulis dengan tangan
Penulis tidak menggunakan XSD, menetapkan URI ruang nama atau memutuskan susunan elemen daripada skema perniagaan. Ia menulis perisytiharan XML dan tidak pernah mengeluarkan DOCTYPE. Kekunci yang mengandungi awalan ruang nama dipelihara secara literal, tetapi itu bukan resolusi ruang nama atau bukti bahawa awalan itu diisytiharkan dengan betul.
Menjana XML yang diterima oleh perkhidmatan tertentu boleh memerlukan atribut, kekangan urutan, kumpulan pilihan dan nama yang layak. Gunakan skema atau dokumentasi semasa untuk membina pemetaan itu. Penukaran generik sesuai untuk pemeriksaan dan dokumen tertumpu data ringkas, bukan pengganti untuk siri yang menyedari kontrak.
Bawa pulang: ramalkan bentuk sebelum anda bergantung padanya — dan cara panel penukar Sintaks menunjukkan struktur XML dokumen JSON menghasilkan
Ramalkan sampul surat, nama item dan jenis kehilangan sebelum bergantung pada keputusan. ToolAcre membalut nilai yang tidak mempunyai satu punca, mengulang tatasusunan, memetakan kunci `@` kepada atribut, menggantikan null dengan teks kosong dan menolak nama yang tidak sah daripada meneka penggantian. Setiap perubahan yang tidak jelas kelihatan dalam output atau amaran.
Uji objek terkecil yang termasuk tatasusunan peringkat atas, rekod berulang, nol, teks berangka dan kekunci janggal. Penolakan adalah bukti berguna bahawa pemetaan manual diperlukan. Fail yang berjaya masih memerlukan pengesahan oleh penerima sebenar, kerana XML yang dibentuk dengan baik dan XML yang sah skema adalah tuntutan yang berbeza.
Selepas penerima menerima spesimen, tambahkan pemeriksaan terbalik sahaja di mana pemetaan dijangka bertahan. Atribut dan kanak-kanak berulang boleh pergi balik di bawah konvensyen ToolAcre sendiri, manakala jenis null dan skalar tidak boleh. Merekodkan perbezaan itu menghalang contoh laluan gembira yang berjaya daripada digeneralisasikan kepada setiap dokumen pesanan yang mungkin dihasilkan oleh penyepaduan anda.