2011-07-22 18 views
10

WCF'nin varsayılan JSON serileştirmesini değiştirmek mümkün mü (Şu anda webHttp davranışı ile test ediyorum) ve MIME türü olarak application/json iletiliyor.WCF varsayılan JSON serileştirmesini değiştirin

{"Key":"PropertyName", "Value":"PropertyValue"} 

Ben sadece (jQuery + WCF ile veri isteme) JSON etkin uç noktaları için hizmet kullanıyorum: Özellikle, her özellik anahtar/değer çifti gibi varsayılan olarak o sevmiyorum.

+0

Bunun yardımcı olup olmadığını görün: http://stackoverflow.com/questions/8372076/post-json-dictionary-without-key-value-text/38440427#38440427 –

cevap

11

JSON ile başa çıkmak için kullanılan seri hale getiriciyi değiştirmek için bir mesaj biçimlendirici kullanabilirsiniz. http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/03/wcf-extensibility-message-formatters.aspx'daki gönderi, varsayılan seri hale getiricinin (DataContractJsonSerializer) diğerine (JSON.NET) nasıl değiştirileceğine ilişkin bir örnek gösterir.

+0

Teşekkürler Carlos. Kolay değildi ama sonunda çalıştım. (ContentTypeMapper'ı unuttum :))) – jaraics

+0

Parlak blog yazısı. NewtonSoft'un varyasyonunu kullanarak bile hem json hem de XML formatını desteklemeyi süper kolaylaştırmak. :) –

-1

JSON nesne yapınıza karşılık gelen sınıfları oluşturmayı düşünün. gibi bu tefrika olsun

[DataContract] 
public class Customer 
{ 
    [DataMember(Name="name")] 
    public string Name{get;set;} 

    [DataMember(Name="id")] 
    public int ID{get;set;} 
} 

: Bu durumda gibi Dictionary<> kullanmak gerekmez

Tabii
{"name": "name-value", "id": "id-value"} 

, bu zaten ne kadar sadece bir alternatiftir ve uygulanabilir olmayabilir .

İlgili konular