2013-02-11 28 views
6

निम्नलिखित की तरह deserializing मैं संपत्ति नाम सम्मेलनों की तरह के साथ गैर सी # ServiceStack.Text लाइब्रेरी का उपयोग कर JSON डेटा deserialize करने के लिए कोशिश कर रहा हूँ, विशेष रूप से साँप मामला:ServiceStack.Text JsonSerializer संपत्ति के नाम को कैसे कॉन्फ़िगर करें जब

{ 
    "first_name": "Foo", 
    "last_name": "Bar" 
} 

var dto = JsonSerializer.DeserializeFromString<MyDto>(dtoData); 
:

public class MyDto 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

मैं वर्तमान में सिर्फ इस कर रहा हूँ: मैं एक POCO में इस deserialize करना चाहते हैं

लेकिन यह संपत्ति के नामों को पहचान नहीं पाएगा। मैंने पहले Newtonsoft.Json में custom ContractResolver का उपयोग करके इसे पार कर लिया है। ServiceStack.Text का उपयोग करके इसे कैसे किया जाना चाहिए?

मैं DataMember विशेषताओं के साथ अपने डीटीओ वर्ग को सजाने के लिए नहीं चाहूंगा क्योंकि यह डेटा के स्रोत की चिंता की तरह लगता है, न कि खुद को, और इसलिए इसे deserialization प्रदर्शन कोड द्वारा संभाला जाना चाहिए। सभी विभिन्न विन्यास और अनुकूलन के लिए JsConfig पर

उत्तर

8

देखो कि ServiceStack's JSON and text serializers समर्थन करता है, उदाहरण के लिए:

JsConfig.EmitLowercaseUnderscoreNames = true; 

तुम क्या चाहते हो जाना चाहिए।

+0

धन्यवाद, यह मुझे लगता है कि मुझे क्या चाहिए। मुझे केवल कुछ डीटीओ प्रकारों के लिए इसे कॉन्फ़िगर करने की आवश्यकता है और उस कॉन्फ़िगरेशन विधि से 'EmitLowercaseUnderscoreNames' अनुपलब्ध प्रतीत होता है, आज इसे ठीक करने के लिए पुल अनुरोध को एक साथ प्रयास करने और रखेगा। – roryf

+0

बूम: https://github.com/ServiceStack/ServiceStack.Text/pull/279 – roryf

+0

अजीब है कि मुझे इसे अचानक उपयोग करना पड़ा। मुझे आश्चर्य है कि कहीं भी एक अद्यतन डिफ़ॉल्ट मान बदलने के कारण हो सकता है। – theoutlander