Ngôn ngữ truy vấn cho JSON


11

Tôi có một máy chủ đang trả về thông điệp JSON rất lớn và ứng dụng khách của tôi chỉ phụ thuộc vào một phần của phản hồi này. Ứng dụng khách cần kiểm tra xem thuộc tính "xyz" có tồn tại trong thông báo JSON hay không và tùy thuộc vào kết quả chạy một usecase cụ thể.

Đối với yêu cầu này, việc chuyển đổi toàn bộ thông điệp JSON thành đối tượng nghe có vẻ hơi tốn kém đối với tôi và do đó câu hỏi này.

Có một ngôn ngữ truy vấn JSON tiêu chuẩn giống như ngôn ngữ chúng ta có cho XML không? Nếu có, những gì tốt nhất biết thực hiện ngôn ngữ truy vấn này trong java.

FYI: Thay đổi hoặc thêm dịch vụ mới ở phía máy chủ không phải là một lựa chọn.


Trong javascript, nếu phản hồi được gửi với tiêu đề chính xác (application / json), phản hồi JSON sẽ là một đối tượng javascript. Có phải đó là những gì bạn đang yêu cầu? Tôi không chắc chắn từ câu hỏi của bạn.
Florian Margaine

@Florian Tôi đồng ý, Hãy để tôi cập nhật câu hỏi của mình và làm cho java cụ thể.
Trang trại

Sau đó, tôi đoán bạn đã thử json.org/java ? :-)
Florian Margaine

Tôi đã tự hỏi điều tương tự. Mọi thư viện Java cho JSON mà tôi thấy dường như cồng kềnh khủng khiếp; không có gì dọc theo dòng JSON.getString(json_string, 'foo.22.bar')(for, thuộc tính "bar" trong phần tử 22 của danh sách tại thuộc tính "foo", có chứa Chuỗi)
Izkata

Hoặc, để tránh phân tích cú pháp mỗi lần, JSON baz = new JSON(json_string); baz.getString('foo.22.bar');chẳng hạn
Izkata

Câu trả lời:


6

Tại sao không chỉ sử dụng javascript? (JSON là ký hiệu đối tượng Javascript sau tất cả). Sau đó, bạn sẽ không phải phân tích cú pháp hoặc thao tác JSON.

EDIT Hãy xem http://json.org/java

Đối với yêu cầu này, việc chuyển đổi toàn bộ thông điệp JSON thành đối tượng nghe có vẻ hơi tốn kém đối với tôi và do đó câu hỏi này.

Không phải vậy. Deserializing một đối tượng là giá rẻ (băng ghế thử nghiệm chính nó). Nói chuyện với API bên ngoài sẽ là một thứ tự đắt hơn. Bạn có thể trực tiếp thao tác chuỗi có thể nhanh hơn một chút nhưng bạn sẽ gặp rủi ro, giảm khả năng mở rộng và giảm khả năng đọc. Một chi phí cao.


Tôi đã cập nhật câu hỏi của mình và làm cho nó cụ thể bằng Java.
Trang trại

Sử dụng javascript không phải là một tùy chọn vì ứng dụng khách đang chạy trên Headunit, chỉ có hỗ trợ LWUIT
Farm

2

"Đo lường, đừng đoán". Có lý thuyết tuần tự hóa và giải tuần tự hóa của tôi tốn kém về mặt lý thuyết, nhưng mục tiêu hiệu suất của ứng dụng của bạn là gì? Nếu tuần tự hóa đối tượng không đẩy hiệu suất của bạn lên mức không thể chấp nhận được, thì đừng lo lắng về điều đó :-). Chìa khóa tất nhiên là phải biết ranh giới hiệu suất nên là gì (ví dụ: Thời gian phản hồi cho người dùng trong 2 giây) và để đo từng phần của chu kỳ yêu cầu / phản hồi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.