2

有効な 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());
}

これを回避する方法はありますか?

4

1 に答える 1