2010-10-22 36 views
6

Tôi đang cố gắng thực hiện một số thao tác JSON đơn giản trên Windows Phone 7. JSON.NET trông rất tuyệt, nhưng VS2010 phàn nàn khi tôi cố thêm tham chiếu vào nó.Phân tích cú pháp JSON trên Windows Phone 7

Nó cho phép tôi thêm dll Silverlight, nhưng cảnh báo tôi rằng nó có thể dẫn đến hành vi ứng dụng lạ, vì vậy tôi hoài nghi rằng nó sẽ thực sự hoạt động.

This trông giống như một cách tốt để tuần tự hóa và deserialize dữ liệu, nhưng tôi cần phải thực sự truy vấn dữ liệu đó. Tôi có thể chỉ sử dụng kỹ thuật này để tuần tự hóa nó thành một IQueryable, sau đó sử dụng LINQ trên đó? Tôi có thể chuyển đổi JSON thành XML và sử dụng LINQ không?

Hoặc tôi có nên tự mình thực hiện thao tác xử lý chuỗi hack và buồn không?

Cập nhật: Đối với một số lý do, tôi có thể thậm chí không có được VS2010 để nhận DataContractJsonSerializer:

 // works 
     DataContractSerializer ser1 = new DataContractSerializer(); 

     // the type or namespace 'DataContractJsonSerializer' could not be found ... 
     DataContractJsonSerializer ser = new DataContractJsonSerializer(); 

Cập nhật 2: Sau đây cũng phàn nàn:

using System.Runtime.Serialization.Json; 

Các lỗi:

The type or namespace name 'Json' does not exist in the namespace 'System.Runtime.Serialization' (are you missing an assembly reference?)

Tôi có làm gì sai hay JSON không được hỗ trợ trong wp7?

Cập nhật 3: Có vẻ như DataContractJsonSerializer nằm trong không gian tên System.Servicemodel.Web.

Cập nhật 4: Tôi đã thêm tham chiếu tới tệp JSONlight JSON.NET và dường như nó hoạt động tốt ngay bây giờ. Ngón tay vượt qua.

+0

Chỉ tò mò; làm thế nào là phát triển cho WP7? – Znarkus

+0

Tại sao bạn vẫn sử dụng JSON.Net khi bạn tìm thấy DataContractJsonSerializer trong System.ServiceModel.Web? Bất kỳ ưu điểm nào? – codeclash

Trả lời

5

Vâng, theo Cập nhật của bạn 3 (gần như):
DataContractJsonSerializer là trong lắp ráp System.Servicemodel.Web.dll, nhưng trong không gian tên System.Runtime.Serialization.Json.

Nó bị thu hút khá nhiều người.

Rất vui khi bạn dường như đã làm việc này.

0

Ngoài ra, nếu bạn sử dụng thuộc tính DataContract, điều này nằm trong không gian tên System.Runtime.Serialization và trong cụm System.Runtime.Serialization.dll.

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