Saya mencoba mengurai beberapa JSON menggunakan perpustakaan JSon.Net. Dokumentasinya tampak agak jarang dan saya bingung bagaimana mencapai apa yang saya butuhkan. Berikut adalah format untuk JSON yang perlu saya parse.
{
"displayFieldName" : "OBJECT_NAME",
"fieldAliases" : {
"OBJECT_NAME" : "OBJECT_NAME",
"OBJECT_TYPE" : "OBJECT_TYPE"
},
"positionType" : "point",
"reference" : {
"id" : 1111
},
"objects" : [ {
"attributes" : {
"OBJECT_NAME" : "test name",
"OBJECT_TYPE" : "test type"
},
"position" : {
"x" : 5,
"y" : 7
}
} ]
}
Satu-satunya data yang benar-benar saya butuhkan dari ini adalah hal-hal dalam array objek. Apakah mungkin bagi saya untuk menguraikannya dengan sesuatu seperti JSonTextReader dan hanya menarik hal-hal yang saya inginkan, seperti OBJECT_TYPE dan posisi x dan y? Saya tidak dapat JSonTextReader
bekerja seperti yang saya inginkan dan saya menemukan sedikit atau tidak ada contoh penggunaan untuk itu.
Sepertinya serialisasi dulu kemudian menggunakan LINQ dengan objek saya akan ideal dan setiap contoh yang saya temukan membahas serialisasi JSON terlebih dahulu, tetapi saya tidak yakin bagaimana saya akan membangun objek untuk struktur ini. Terutama larik objek yang harus berupa daftar Pasangan atribut dan objek posisi. Saya tidak tahu bagaimana saya akan mengkodekan objek saya sehingga JSon.Net akan tahu bagaimana membuat serial itu.
Saya pikir saya bisa menulis parser sederhana saya sendiri untuk hanya menarik semua yang saya butuhkan ke dalam objek atribut yang saya buat, tetapi saya kurang beruntung.
Semoga ini semua masuk akal, ada ide?
sumber
XElement
yang memungkinkan saya menggunakan LINQ pada objek JSON?Edit: Terima kasih Marc, baca tentang masalah struct vs class dan Anda benar, terima kasih!
Saya cenderung menggunakan metode berikut untuk melakukan apa yang Anda gambarkan, menggunakan metode statis JSon.Net:
Tautan: Serialisasi dan Deserialisasi JSON dengan Json.NET
Untuk daftar Objek, izinkan saya menyarankan menggunakan daftar umum yang dibuat dari kelas kecil Anda sendiri yang berisi
attributes
danposition
kelas. Anda dapat menggunakanPoint
struct diSystem.Drawing
(System.Drawing.Point
atauSystem.Drawing.PointF
untuk bilangan floating point) untuk Anda X dan Y.Setelah pembuatan objek, jauh lebih mudah untuk mendapatkan data yang Anda cari vs. penguraian teks yang Anda lihat.
sumber
(Pertanyaan ini muncul tinggi di hasil mesin pencari, tetapi saya akhirnya menggunakan pendekatan yang berbeda. Menambahkan jawaban untuk pertanyaan lama ini jika orang lain dengan pertanyaan serupa membaca ini)
Anda dapat menyelesaikan ini dengan Json.Net dan membuat metode ekstensi untuk menangani item yang ingin Anda putar:
Dan kemudian akses data seperti ini: (skenario: menulis ke konsol):
sumber
sumber
[
atau]
karakter (membatasi struktur larik atau daftar).Anda menggunakan
JSON
kelas dan kemudian memanggilGetData()
fungsi tersebut.sumber