2010-03-18 44 views
5

Trong một Mix10 presentation, người dẫn chương trình (Charlie Kindel) nói rằng khi viết các ứng dụng dựa trên Silverlight cho WP7 bạn nhận được tất cả Silverlight 3.0 với một số Silverlight 4.0 trộn lẫn trong.System.Json namespace thiếu từ Windows Phone 7

Tại sao sau đó là System.Json mất tích? Nó được bao gồm trong Silverlight 3.0, và được bao gồm trong Silverlight 4.0.

Windows Phone 7 Class Library Reference

Trả lời

1

Tôi không chắc chắn lý do tại sao một trong hai, nhưng nó nói vào liên kết này mà không gian tên không được hỗ trợ

Xem Features Supported in Silverlight for Windows Phone.

+0

Tôi đoán tôi đã bỏ lỡ điều đó. Cảm ơn bạn đã chỉ ra những gì tôi rõ ràng đã bỏ lỡ. – mikefrey

7

Bạn cũng có thể thử sử dụng DataContractJsonSerializer, chắc chắn có mặt trong các công cụ MIX RC http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx.

+0

Trong khi lớp này hiện diện trong Silverlight, nó không có trên Windows Phone 7. – legalize

+0

Dường như nó hiện có (như các công cụ Beta mà tôi đang xem). – samjudson

+0

Tôi không thể tìm thấy nó và tôi có phiên bản cuối cùng của các công cụ. –

4

Dường như JSON được hỗ trợ trong Windows Phone 7 trong không gian tên System.Runtime.Serialization.Json, hy vọng điều này sẽ hữu ích, mặc dù câu hỏi này là một tháng tuổi! Thông tin từ TechDays tại Luân Đôn (qua Twitter) không có cá nhân.


Chỉ cần một bản cập nhật là không gian tên và lớp I được trích dẫn ở đây là không chính xác vì vậy đây là không gian tên chính xác và lớp:

System.Servicemodel.Web và Class là DataContractJsonSerializer cho JSON serialization và Deserialisation trên Windows Phone 7 - xin lỗi về câu trả lời không chính xác mà tôi đã sửa sau khi nhận xét được đăng ở đây.

+0

Không gian tên này không có trên Windows Phone 7, xin lỗi. Đó là trong Silverlight, tuy nhiên. – legalize

+0

Trên thực tế nó được hỗ trợ trong Windows Phone 7 Tôi trích dẫn không gian tên và lớp sai, vì tôi đã không chắc chắn nó là gì tại thời điểm đó, cảm ơn cho các bình luận như nó nhắc nhở tôi. DataContractJsonSerializer trong System.Servicemodel.Web được sử dụng cho JSON serialization và deserialisation không System.Runtime.Serialization.Json vì đó là không gian tên Silverlight - Tôi đã giả định tại thời điểm chúng giống với thông tin trên vùng tên không rõ ràng khi Tôi đã trả lời. – RoguePlanetoid

2

Trong khi DataContractJsonSerializer có sẵn trong Silverlight, nó dường như không có sẵn trên Windows Phone 7 CTP. Có lẽ nó sẽ xuất hiện sau đó, nhưng nó không có bây giờ. (Tôi đã thử sử dụng nó trong mã, các System.Runtime.Serialization lắp ráp không bao gồm lớp này và official documentation nói rằng JSON serialization là cái gì đó là trong Silverlight, nhưng không phải trong Windows Phone 7.)

Tuy nhiên, tôi đã có thể lấy thư viện JSON.NET và tạo một dự án thư viện WP7 ra khỏi nó. Điều này đã cho tôi một cơ sở hạ tầng JSON trên điện thoại mà tôi đang sử dụng thành công.

+0

Tôi đã cố gắng thêm một tham chiếu đến phiên bản .NET nhỏ gọn của JSON.NET từ dự án ứng dụng wp7 của tôi, nhưng nó không thành công. Bạn đang nói rằng bạn xây dựng lại nguồn? –

2

Trong dự án Windows Phone 7 của chúng tôi, chúng tôi đang sử dụng James Newton-Kings JSON.Net Library. Chỉ cần tải xuống mã và thêm tham chiếu đến Newtonsoft.Json.Silverlight. Làm việc như một say mê.

+0

Tôi đang sử dụng điều này là tốt, đó là một giải pháp tuyệt vời cho nền tảng này. –

14

Thêm tham chiếu đến System.ServiceModel.Web cũng như tham chiếu đến System.Runtime.Serialization và nó sẽ hoạt động. System.ServiceModel.Web xuất hiện để thêm .JSON vào không gian tên Serialization.

+0

+1, cảm ơn rất nhiều. Điều này đã giúp tôi đạt được điều đó cuối cùng :-) –

+0

+1, giải quyết vấn đề của tôi quá :) – dargod

+0

Thật kỳ quặc khi thêm System.ServiceModel.Web hoạt động. Nó thực sự thêm .Json vào không gian tên tuần tự – Frederico