


Bagaimana untuk melaksanakan penukaran medan kedudukan automatik ke format JSON setiap kali anda menanyakan jadual tempat?
Gorm dengan cekap mengendalikan data jenis geometri: penukaran json automatik
Apabila mengendalikan pangkalan data dengan Gorm, sering kali perlu memproses data jenis geometry
, seperti bidang position
menukarkan dalam pangkalan data (mengandaikannya adalah jenis geometry
) ke dalam format JSON yang lebih mudah diproses. Artikel ini akan memperkenalkan kaedah untuk menukar medan position
secara automatik ke JSON setiap kali anda menanyakan jadual spot
, tanpa menukarkannya secara manual setiap kali anda bertanya.
Soalan: Memudahkan penukaran geometri ke JSON
Pada masa lalu, kita mungkin perlu menukar medan position
ke rentetan JSON menggunakan fungsi st_asgeojson
sahaja selepas setiap pertanyaan. Untuk memudahkan proses, kami mahu Gorm untuk melengkapkan transformasi ini secara automatik apabila menanyakan.
Penyelesaian: Pengimbas tersuai dan pertanyaan SQL mentah
Untuk melaksanakan penukaran JSON automatik di Gorm, kita boleh menggabungkan pengimbas tersuai dan pertanyaan SQL Raw
:
-
Definisi model dan pengimbas tersuai:
Pertama, tentukan model
spot
dan tambahkan pengimbas tersuai untuk medanposition
. Pengimbas ini bertanggungjawab untuk menukar aliran byte yang dikembalikan oleh pangkalan data ke dalam strukturgeojson.geometry
. Di sini, anggap bahawa anda telah memperkenalkangithub.com/paulmach/go.geojson
dangithub.com/tidwall/gjson
perpustakaan.import ( "Kesalahan" "github.com/paulmach/go.geojson" "github.com/tidwall/gjson" ) Taipkan tempat struktur { Id uint Kedudukan *geojson.geometry `gorm:" lajur: kedudukan "` } func (g *geojson.geometry) imbasan (nilai antara muka {}) error { jika nilai == nil { kembali nih } bait, ok: = nilai. ([] byte) jika! ok { Kembali kesilapan.new ("gagal mengimbas geometri") } kembali gjson.unmarshal (string (bytes), g) // Gunakan gjson untuk deserialization json}
Salin selepas log masuk -
Fungsi pertanyaan tersuai:
Buat fungsi tersuai, gunakan pertanyaan SQL
Raw
, dan gunakan fungsist_asgeojson
untuk menukar pada tahap pangkalan data.Import "gorm.io/gorm" func getSpot (db *gorm.db, id uint) ( *spot, error) { tempat tempat var err: = db.raw ("Pilih ID, St_ASGEOJSON (kedudukan) sebagai kedudukan dari tempat di mana id =?", id) .scan (& spot) .error jika err! = nil { Kembali nih, Err } kembali & tempat, nih }
Salin selepas log masuk -
Kemas kini data:
Apabila mengemas kini data, anda perlu menukar struktur
geojson.Geometry
kembali ke rentetan JSON, dan kemudian tuliskannya ke pangkalan data menggunakan fungsiST_GeomFromGeoJSON
.import ( "github.com/tidwall/gjson" ) Funce UpdatesPot (db *gorm.db, spot *spot) ralat { jsonstr, err: = gjson.marshal (spot.position) // Gunakan gjson untuk siri json jika err! = nil { kembali err } kembali db.exec ("Kemas kini kedudukan set tempat = st_geomfromgeojson (?) Di mana id =?", jsonstr, spot.id) .error }
Salin selepas log masuk
Melalui langkah -langkah di atas, kami telah menyedari penukaran jenis geometry
automatik ke format JSON di Gorm, yang meningkatkan kecekapan dan kebolehbacaan kod. Ingatlah untuk menggantikan github.com/paulmach/go.geojson
dan github.com/tidwall/gjson
untuk laluan pakej sebenar anda. Memilih perpustakaan JSON yang betul bergantung kepada keperluan projek anda.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penukaran medan kedudukan automatik ke format JSON setiap kali anda menanyakan jadual tempat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Sepuluh pertukaran mata wang digital teratas seperti Binance, OKX, Gate.io telah meningkatkan sistem mereka, urus niaga yang pelbagai dan langkah -langkah keselamatan yang ketat.

Sepuluh platform perdagangan cryptocurrency teratas di dunia termasuk Binance, OKX, Gate.io, Coinbase, Kraken, Huobi Global, Bitfinex, Bittrex, Kucoin dan Poloniex, yang semuanya menyediakan pelbagai kaedah perdagangan dan langkah -langkah keselamatan yang kuat.

Platform perdagangan mata wang digital yang boleh dipercayai: 1. Okx, 2. Binance, 3. Coinbase, 4. Kraken, 5. Huobi, 6. Kucoin, 7.

Saat ini disenaraikan di antara sepuluh mata wang mata wang maya yang teratas: 1. Binance, 2 Okx, 3. Gate.io, 4. Perpustakaan duit syiling, 5. Siren, 6. Huobi Global Station, 7. Bybit, 8. Kucoin, 9.

Memebox 2.0 mentakrifkan semula pengurusan aset crypto melalui seni bina yang inovatif dan kejayaan prestasi. 1) Ia menyelesaikan tiga titik kesakitan utama: silo aset, kerosakan pendapatan dan paradoks keselamatan dan kemudahan. 2) Melalui hab aset pintar, pengurusan risiko dinamik dan enjin peningkatan pulangan, kelajuan pemindahan rantaian, kadar hasil purata dan kelajuan tindak balas insiden keselamatan diperbaiki. 3) Menyediakan pengguna dengan visualisasi aset, automasi dasar dan integrasi tadbir urus, merealisasikan pembinaan semula nilai pengguna. 4) Melalui kerjasama ekologi dan inovasi pematuhan, keberkesanan keseluruhan platform telah dipertingkatkan. 5) Pada masa akan datang, kolam insurans kontrak pintar, ramalan integrasi pasaran dan peruntukan aset yang didorong AI akan dilancarkan untuk terus memimpin pembangunan industri.

Harga Bitcoin berkisar antara $ 20,000 hingga $ 30,000. 1. Harga Bitcoin telah berubah secara dramatik sejak tahun 2009, mencapai hampir $ 20,000 pada tahun 2017 dan hampir $ 60,000 pada tahun 2021. Harga dipengaruhi oleh faktor -faktor seperti permintaan pasaran, bekalan, dan persekitaran makroekonomi. 3. Dapatkan harga masa nyata melalui pertukaran, aplikasi mudah alih dan laman web. 4. Harga Bitcoin sangat tidak menentu, didorong oleh sentimen pasaran dan faktor luaran. 5. Ia mempunyai hubungan tertentu dengan pasaran kewangan tradisional dan dipengaruhi oleh pasaran saham global, kekuatan dolar AS, dan sebagainya. 6. Trend jangka panjang adalah yakin, tetapi risiko perlu dinilai dengan berhati-hati.

Sepuluh pertukaran cryptocurrency teratas di dunia pada tahun 2025 termasuk Binance, OKX, Gate.io, Coinbase, Kraken, Huobi, Bitfinex, Kucoin, Bittrex dan Poloniex, yang semuanya dikenali dengan jumlah dan keselamatan perdagangan mereka yang tinggi.

Menggunakan perpustakaan Chrono di C membolehkan anda mengawal selang masa dan masa dengan lebih tepat. Mari kita meneroka pesona perpustakaan ini. Perpustakaan Chrono C adalah sebahagian daripada Perpustakaan Standard, yang menyediakan cara moden untuk menangani selang waktu dan masa. Bagi pengaturcara yang telah menderita dari masa. H dan CTime, Chrono tidak diragukan lagi. Ia bukan sahaja meningkatkan kebolehbacaan dan mengekalkan kod, tetapi juga memberikan ketepatan dan fleksibiliti yang lebih tinggi. Mari kita mulakan dengan asas -asas. Perpustakaan Chrono terutamanya termasuk komponen utama berikut: STD :: Chrono :: System_Clock: Mewakili jam sistem, yang digunakan untuk mendapatkan masa semasa. Std :: Chron
