有効な XML を受け取り、基になるデータ型を知らなくても JSON に変換する汎用ルーチンが必要です。これは Json.Net で簡単に実行でき、DataContractJsonSerializer で実行する方法も知っていますが、私たちの組織は Json.Net を使用しておらず、DataContractJsonSerializer にはデータ コントラクトが有効なオブジェクト タイプが必要です。
Json.Net を使用した私の作業コード:
XmlDocument document = new XmlDocument();
document.LoadXml(xml);
string jsonText = JsonConvert.SerializeXmlNode(document);
Json.Net の代わりに JsonReaderWriterFactory を使用して、使用できるようにしたいコード:
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());
}
これを回避する方法はありますか?