2011-09-26 11 views
28

मैं Json.Net को उद्धरण चिह्नों के बिना किसी संपत्ति के नाम को क्रमबद्ध करने की कोशिश कर रहा हूं, और Google पर दस्तावेज़ ढूंढना मुश्किल लगता है। मैं यह कैसे कर सकता हूँ?Json.Net - उद्धरण के बिना संपत्ति का नाम Serialize

यह एक बड़े जेसन रेंडर के एक बहुत ही छोटे हिस्से में है, इसलिए मैं या तो संपत्ति विशेषता जोड़ना चाहता हूं, या कक्षा पर क्रमबद्ध विधि को ओवरराइड करना चाहता हूं।

वर्तमान में, यह इस तरह से प्रस्तुत करता है:

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

और मैं रेंडर करने के लिए की तरह इसे पाने के लिए उम्मीद कर रहा हूँ:

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

वर्ग से (href और type उद्धरण चिह्नों के बिना कर रहे हैं):

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

यह मान्य JSON नहीं है। तुम ऐसा क्यों करना चाहते हो? –

+4

देखें [JSON में, प्रत्येक नाम का उद्धरण क्यों दिया जाता है?] (Http://stackoverflow.com/questions/2067974/in-json-why-is-each-name-quoted) –

+1

मार्सेलो - यह किसी की ज़रूरतों को पूरा करने के लिए है तृतीय पक्ष jQuery प्लगइन, जो इस डेटा में फ़ीड करता है। – Overflew

उत्तर

34

यह संभव है, लेकिन मैं इसके खिलाफ के खिलाफ सलाह देता हूं क्योंकि यह अवैध JSON उत्पन्न करेगा क्योंकि मार्सेलो और मार्क ने अपनी टिप्पणियों में बताया है।

Json.NET पुस्तकालय के रूप में निम्नानुसार आप इस लक्ष्य को हासिल कर सकते हैं का उपयोग करना:

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

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

जब serializing वस्तु स्थिर JsonConvert प्रकार के बजाय JsonSerializer प्रकार का उपयोग करें।

उदाहरण के लिए:

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(); 

यह होगा उत्पादन:

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

आप गलत पर JsonTextWriter उदाहरण के QuoteName property सेट करते हैं वस्तु के नाम अब उद्धृत किया जाएगा।

संबंधित मुद्दे