Bahasa query untuk JSON


11

Saya memiliki server yang mengembalikan pesan JSON yang sangat besar dan aplikasi klien saya hanya bergantung pada bagian dari respons ini. Aplikasi klien perlu memeriksa apakah properti "xyz" ada di pesan JSON dan tergantung pada hasil menjalankan usecase tertentu.

Untuk persyaratan ini, mengubah seluruh pesan JSON menjadi objek terdengar agak mahal bagi saya dan karenanya pertanyaan ini.

Apakah ada bahasa query JSON standar seperti yang kami miliki untuk XML? Jika ya apa yang terbaik ketahui implementasi bahasa query ini di java.

FYI: Mengubah atau menambahkan layanan baru di sisi server bukanlah suatu pilihan.


Dalam javascript, jika respons dikirim dengan header yang benar (aplikasi / json), respons JSON akan menjadi objek javascript. Itukah yang kamu minta? Saya tidak yakin dari pertanyaan Anda.
Florian Margaine

@Florian Saya setuju, Biarkan saya memperbarui pertanyaan saya dan membuatnya khusus java.
Pertanian

Lalu, saya kira Anda sudah mencoba json.org/java ? :-)
Florian Margaine

Saya bertanya-tanya hal yang sama. Setiap perpustakaan Java untuk JSON yang saya lihat tampak sangat besar; apakah tidak ada apa-apa di sepanjang baris JSON.getString(json_string, 'foo.22.bar')(untuk, properti "bar" dalam elemen daftar 22 di properti "foo", yang berisi String)
Izkata

Atau, untuk menghindari penguraian setiap kali, JSON baz = new JSON(json_string); baz.getString('foo.22.bar');misalnya
Izkata

Jawaban:


6

Mengapa tidak menggunakan javascript saja? (JSON adalah Notasi Objek Javascript setelah semua). Maka Anda tidak perlu menguraikan atau memanipulasi JSON.

EDIT Lihatlah di http://json.org/java

Untuk persyaratan ini, mengubah seluruh pesan JSON menjadi objek terdengar agak mahal bagi saya dan karenanya pertanyaan ini.

Bukan itu. Deserializing objek adalah murah (tes bangku sendiri). Berbicara dengan API eksternal akan menjadi urutan besarnya lebih mahal. Anda dapat secara langsung memanipulasi string yang mungkin sedikit lebih cepat tetapi Anda akan mengambil risiko bug, mengurangi ekstensibilitas dan mengurangi keterbacaan. Biaya tinggi.


Saya memperbarui pertanyaan saya dan membuatnya khusus Java.
Pertanian

Menggunakan javascript bukan pilihan karena aplikasi klien berjalan di Headunit yang hanya memiliki dukungan LWUIT
Farm

2

"Ukur, jangan menebak". Ya serialisasi objek dan deserialisation saya menjadi mahal dalam teori, tetapi apa tujuan kinerja aplikasi Anda? Jika serialisasi objek (de) tidak mendorong kinerja Anda ke tingkat yang tidak dapat diterima, maka jangan khawatir tentang hal itu :-). Kuncinya tentu saja adalah untuk mengetahui apa batas-batas kinerja seharusnya (mis. Waktu respons kepada pengguna dalam 2 detik) dan untuk mengukur setiap bagian dari siklus permintaan / respons.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.