2011-09-26 29 views
28

Tôi đang cố gắng để có được Json.Net serialise một tên tài sản mà không có dấu ngoặc kép, và tìm thấy nó khó khăn để xác định vị trí tài liệu trên Google. Tôi có thể làm cái này như thế nào?Json.Net - Serialize tên tài sản mà không cần báo giá

Nó nằm trong một phần rất nhỏ của kết xuất Json lớn, vì vậy tôi muốn thêm thuộc tính thuộc tính hoặc ghi đè lên phương pháp tuần tự trên lớp.

Hiện nay, nó ám như thế này:

"event_modal": 
{ 
    "href":"file.html", 
    "type":"full" 
} 

Và tôi hy vọng để có được nó để render như: (hreftype là không có ngoặc kép)

"event_modal": 
{ 
    href:"file.html", 
    type:"full" 
} 

Từ lớp:

public class ModalOptions 
{ 
    public object href { get; set; } 
    public object type { get; set; } 
} 
+4

Đó không phải là JSON hợp lệ. Tại sao bạn muốn làm nó? –

+4

Xem [bằng JSON, Tại sao mỗi tên được trích dẫn?] (Http://stackoverflow.com/questions/2067974/in-json-why-is-each-name-quoted) –

+1

Marcello - Nó đáp ứng nhu cầu của một Plugin jQuery của bên thứ ba, nguồn cấp dữ liệu này. – Overflew

Trả lời

34

Có thể, nhưng Tôi khuyên chống lại nó vì nó sẽ tạo ra JSON không hợp lệ như Marcelo và Marc đã chỉ ra trong ý kiến ​​của họ.

Sử dụng thư viện Json.NET bạn có thể đạt được điều này như sau:

[JsonObject(MemberSerialization.OptIn)] 
public class ModalOptions 
{ 
    [JsonProperty] 
    public object href { get; set; } 

    [JsonProperty] 
    public object type { get; set; } 
} 

Khi serializing đối tượng sử dụng các loại JsonSerializer thay vì tĩnh JsonConvert loại.

Ví dụ:

var options = new ModalOptions { href = "file.html", type = "full" }; 
var serializer = new JsonSerializer(); 
var stringWriter = new StringWriter(); 
using (var writer = new JsonTextWriter(stringWriter)) 
{ 
    writer.QuoteName = false; 
    serializer.Serialize(writer, options);    
} 
var json = stringWriter.ToString(); 

này sẽ sản xuất:

{href:"file.html",type:"full"} 

Nếu bạn đặt QuoteName property của instance JsonTextWriter false tên đối tượng sẽ không còn được trích dẫn.

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