我需要一个通用例程,它接受任何有效的 XML 并将其转换为 JSON,而无需知道底层数据类型。我知道这很容易使用 Json.Net 完成,我也知道如何使用 DataContractJsonSerializer 来完成,但我们的组织不使用 Json.Net,并且 DataContractJsonSerializer 需要启用数据协定的对象类型。
我使用 Json.Net 的工作代码:
XmlDocument document = new XmlDocument();
document.LoadXml(xml);
string jsonText = JsonConvert.SerializeXmlNode(document);
我希望能够使用的代码,使用 JsonReaderWriterFactory 而不是 Json.Net:
string jsonText = string.Empty;
MemoryStream stream = new MemoryStream();
StreamWriter streamWriter = new StreamWriter(stream);
streamWriter.Write(xml);
streamWriter.Flush();
stream.Position = 0;
using (XmlDictionaryWriter xmlWriter = JsonReaderWriterFactory.CreateJsonWriter(stream))
{
object someObject = new object();
DataContractJsonSerializer serializer = new DataContractJsonSerializer(someObject.GetType());
serializer.WriteObject(stream, someObject);
xmlWriter.Flush();
jsonText = Encoding.Default.GetString(stream.GetBuffer());
}
有没有解决的办法?