2015-10-12 13 views
9

Làm thế nào có thể một serialize một đối tượng trực tiếp đến một cá thể JObject trong JSON.Net? Có gì thường được thực hiện là chuyển đổi các đối tượng trực tiếp đến một json chuỗi như vậy:Sắp xếp một đối tượng trực tiếp vào một JObject thay vì một chuỗi trong json.net

string jsonSTRINGResult = JsonConvert.SerializeObject(someObj); 

Một có thể sau đó deserialize lại cho rằng một JObject như sau:

JObject jObj = JsonConvert.DeserializeObject<JObject>(jsonSTRINGResult); 

Đó dường như công việc, nhưng nó sẽ có vẻ như cách này có một hit hiệu suất gấp đôi (serialize và sau đó deserialize). Có SerializeObject sử dụng nội bộ JObject có thể truy cập bằng cách nào đó không? Hoặc là có một số cách để chỉ serialize trực tiếp đến một JObject?

+1

Tại sao bạn muốn làm việc với JObject trong mã của mình trên loại/lớp gốc? –

+0

http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_FromObject.htm – Eser

+0

Tóm lại, nó cho phép Json.Net xử lý tất cả các công cụ serialization cứng, cho phép tôi làm một số việc tôi muốn làm kết quả serialization cuối cùng, mà sẽ không được json. Nếu bạn muốn biết (mặc dù điều này không liên quan đến vấn đề cụ thể), tôi muốn tuần tự hóa thành XML theo cách mà các thuộc tính được sử dụng cho các thuộc tính thay vì các phần tử con XML, như trình serialization JSON.Net XML (dễ hiểu), có thể một số tùy chỉnh khác. –

Trả lời

1

Xin lưu ý rằng JObject tuyến đường được đề xuất bởi @Eser sẽ chỉ làm việc cho các đối tượng CLR không cho mảng. Nó là kết quả trong ngoại lệ dưới đây nếu bạn cố gắng chuyển đổi một đối tượng Array JObject:

Một ngoại lệ unhandled của loại 'System.InvalidCastException' xảy ra trong Newtonsoft.Json.dll

thông tin bổ sung: Không thể đúc tượng của loại 'Newtonsoft.Json.Linq.JArray' để nhập 'Newtonsoft.Json.Linq.JObject'.

Vì vậy, trong trường hợp nó là một đối tượng mảng sau đó bạn nên sử dụng JArray thay vì như hình dưới đây:

JArray jArray = JArray.FromObject(someArrayObject); 

Vui lòng gửi kèm using Newtonsoft.Json.Linq; ở phía trên cùng của tập tin mã của bạn để sử dụng đoạn mã này.

+0

Tuyệt vời đứng đầu, cảm ơn! –

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