2009-08-30 29 views
18

Tôi hiện đang sử dụng asp.net mvc và tự hỏi một lựa chọn tốt hơn bằng cách sử dụng được xây dựng trong Json hoặc Json.Net Tôi không chắc chắn nếu có một lợi thế hơn khác.Asp.net MVC json hoặc Json.net?

Ngoài ra nếu tôi chọn đi xuống tuyến đường của Json.Net thì tôi có nên sử dụng phiên bản ổn định hoặc beta 4 không? Tôi không chắc chắn làm thế nào không ổn định các betas được.

Trả lời

10

Bạn có thể gặp sự cố serializing dates with the MVC JSON. Câu trả lời của tôi cho bài đăng đó được lặp lại bên dưới.

Nếu bạn không liên kết với bộ nối tiếp MS JSON, bạn có thể sử dụng Json.NET. Nó đi kèm với một IsoDateTimeConverter. Điều này sẽ tuần tự hóa các ngày thành một chuỗi được định dạng ISO 8601.

Ví dụ: trong dự án nối tiếp myObject của chúng tôi được xử lý qua mã sau đây.

JsonNetResult jsonNetResult = new JsonNetResult(); 
jsonNetResult.Formatting = Formatting.Indented; 
jsonNetResult.SerializerSettings.Converters.Add(new IsoDateTimeConverter()); 
jsonNetResult.Data = myObject; 

Nếu bạn quyết định để có những Json.NET chìm bạn cũng sẽ muốn lấy JsonNetResult vì nó trả về một ActionResult có thể được sử dụng trong ứng dụng ASP.NET MVC. Nó khá dễ sử dụng.

Để biết thêm thông xem: Good (Date)Times with Json.NET

Chúng tôi hiện đang sử dụng Json.NET v3.5 Beta 4 và đã không gặp phải vấn đề này. Tuy nhiên, chúng tôi chưa thực sự đánh thuế hệ thống của chúng tôi vì nó chưa được đưa vào sản xuất. Số dặm của bạn có thể khác nhau tùy thuộc vào số khung bạn đang sử dụng.

Hy vọng điều này sẽ hữu ích.

6

Suy nghĩ của tôi là tôi không tìm thấy bất kỳ vấn đề nào với việc nướng ở Json. Tôi sẽ đề nghị đi với điều đó cho đến khi bạn tìm thấy một cái gì đó không hoạt động. Ít phụ thuộc hơn làm cho việc gỡ lỗi đơn giản hơn.

+1

Hoàn toàn đồng ý. Json.net là một thư viện thực sự tốt nhưng trừ khi bạn yêu cầu các tính năng bên ngoài các tùy chọn .NET của nó chỉ là một sự phụ thuộc không cần thiết mà bạn cần quản lý. – jswanson

1

Trước đây tôi đã làm việc với thư viện .NET JSON, sử dụng phương pháp chọn tham gia hoặc chọn không tham gia biểu thị thành viên của lớp nào được đăng. Khi xem xét ứng dụng mẫu NerdDinner, tôi thấy một lớp trong SearchController được gọi là JsonDinner trông giống như một lớp Dinner thông thường, nhưng dường như chỉ tồn tại để xuất ra một vài chi tiết bổ sung có thể được lập luận. Tính năng, đặc điểm. Trong trường hợp đơn giản này, một cơ chế ghi chú thuộc tính trên mô hình, xác định các phần sẽ được tuần tự hóa thành JSON sẽ dẫn đến việc giảm số lượng mã được bảo trì bằng tay.

Các vấn đề liên quan