2013-12-13 12 views
5

Tôi có một đối tượng [DataContract] có một số thuộc tính và được tuần tự hóa thành JSON bằng cách sử dụng DataContractJsonSerializer.Tuần tự hóa từ điển <string, string> theo định dạng cụ thể

Một trong các thuộc tính là loại Dictionary<string, string> và khi việc tuần tự hóa xảy ra, nó tạo ra lược đồ JSON sau.

"extra_data": [ 
    { 
    "Key": "aKey", 
    "Value": "aValue" 
    } 
] 

Bây giờ tôi cần giản đồ JSON để được như thế này

"extra_data": { 
     "aKey": "aValue" 
} 

Bạn có thể không bao giờ dĩ nhiên biết trước những gì các giá trị, đó là một Dictionary mà người dùng sẽ thiết lập khóa và giá trị.

Tôi đang suy nghĩ xem điều này có thể xảy ra bằng cách sử dụng các loại ẩn danh hay không hoặc có cấu hình nào tôi có thể thực hiện để hoàn thành mục tiêu của mình không?

Cảm ơn bạn.

+0

Duplicate của http://stackoverflow.com/questions/4547550/c-sharp-json-custom-serialization –

Trả lời

1

Ok, chúng ta hãy nói rằng bạn có:

[DataContract] 
public class MyObject 
{ 
    [DataMember(Name = "extra_data")] 
    public Dictionary<string, string> MyDictionary { get; set; } 

} 

Sau đó, bạn có thể sử dụng DataContractJsonSerializerSettings với UseSimpleDictionaryFormat set là true, một cái gì đó như thế này:

var myObject = new MyObject { MyDictionary = new Dictionary<string, string> { { "key1", "value1" }, { "key2", "value2" } } }; 

    DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings { UseSimpleDictionaryFormat = true }; 

    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(MyObject), settings); 

    var result = string.Empty; 

    using (MemoryStream ms = new MemoryStream()) 
    { 
     serializer.WriteObject(ms, myObject); 

     result = Encoding.Default.GetString(ms.ToArray()); 
    } 
+0

Làm việc hoàn hảo và đơn giản. Cảm ơn bạn. –

+0

Không hoạt động cho Windows Phone 8. –

+0

Đối với Windows Phone 8 Tôi đã sử dụng gói phần mềm serializer JSON Newton Nuget. http://james.newtonking.com/json –

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