में सेरिअलाइज़ करें JSON.NET को बताना संभव है मेरे पास JSON डेटा के साथ एक स्ट्रिंग है? जैसेJSON.NET: जेसन स्ट्रिंग प्रॉपर्टी को जेसन ऑब्जेक्ट
public class Foo
{
public int Id;
public string RawData;
}
जो मैं इस तरह का उपयोग करें::
var foo = new Foo();
foo.Id = 5;
foo.RawData = @"{""bar"":42}";
जो मैं चाहता हूँ इस तरह धारावाहिक जा करने के लिए:
{"Id":5,"RawData":{"bar":42}}
मूल रूप से मैं असंरचित का एक टुकड़ा मैं इस तरह एक वर्ग है जेएसओएन के रूप में संग्रहीत परिवर्तनीय-लंबाई डेटा, मुझे इस डेटा को एक भाग के रूप में रखने के लिए पूरी तरह से क्रमबद्ध ऑब्जेक्ट की आवश्यकता है।
धन्यवाद।
संपादित करें: बस यह सुनिश्चित करने के लिए कि यह ठीक से समझा जाता है, यह एक तरफा क्रमिकरण है, यानी मुझे उसी वस्तु में वापस deserialize करने की आवश्यकता नहीं है; अन्य प्रणाली इस आउटपुट को संसाधित करेगी। मुझे JSON का हिस्सा बनने के लिए RawData की सामग्री की आवश्यकता है, केवल स्ट्रिंग नहीं।
public class RawJsonConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteRawValue(value.ToString());
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type objectType)
{
return typeof(string).IsAssignableFrom(objectType);
}
public override bool CanRead
{
get { return false; }
}
}
तो यह के साथ अपने वर्ग को सजाने:
हाँ यह संभव है देखते हैं, लेकिन क्या आप मुझे बता सकते हैं कि वास्तव में क्या उत्पादन की जरूरत है? वर्तमान में यह है: {"आईडी": 5, "रॉडाटा": "{\" बार \ ": 42}"} –
@ रिवर, यह वही है जो मुझे चाहिए। मेरे पास जेएसओएन सामग्री के साथ एक स्ट्रिंग प्रॉपर्टी है जो मुझे लगता है कि इसे जेएसओएन पर क्रमबद्ध करने के उद्देश्य के लिए बेकार है। – port443
@ रिवर, क्षमा करें, मैंने आपका उदाहरण पर्याप्त रूप से पर्याप्त नहीं पढ़ा। JSON में RawData की आपकी स्थिति में स्ट्रिंग है, मुझे इसे उप-ऑब्जेक्ट होने की आवश्यकता है (यानी आपके संस्करण में अतिरिक्त उद्धरण और बैकस्लाश जोड़े गए हैं। – port443