1

そのため、最新のWebAPIアセンブリを使用してWCFWebサービスに取り組んでおり、JsonValueオブジェクトが大好きです。

私がやりたいのは、JsonValueオブジェクトにバインドされているJSONを受け入れ、そのJsonValueオブジェクトを同等のXML表現に変換して、処理のためにストアドプロシージャに渡すことができるようにすることです。これにより、JsonValueをバインドするオブジェクトを作成する必要がなくなり、物事が流動的になります。

次に、データベースからXML形式でデータを選択し、それをJsonValueに変換してクライアントに返すことができるようにしたいと思います。

この拡張メソッドによって、JsonValueをXMLの文字列表現に変換することができました。

// Convert JsonValue to XML string
public static string ToXmlString(this JsonValue instance) {
    using (var ms = new MemoryStream()) {
        using (var xdw = XmlDictionaryWriter.CreateTextWriter(ms)) {
            instance.Save(xdw);
            xdw.Flush();
            return Encoding.UTF8.GetString(ms.ToArray());
        }
    }
}

これを行うためのより良い方法はありますか?この方法は問題ありませんが、私はただ疑問に思っていました。

また、Json.NETライブラリを使用してXML文字列値をJsonValueに変換し直し、XML文字列をJSON文字列に変換してから、次のように文字列をJsonValueオブジェクトにロードすることもできます。

// Return JSON representation of XML
return JsonValue.Parse(JsonConvert.SerializeXNode(xmlElement, Formatting.None, true));

このアプローチは問題ありませんが、この1つのメソッドのみに含めるため、Json.NETライブラリに依存する必要はありません。Json.NETライブラリを使用せずにこれを行う方法はありますか?

助けてくれてありがとう!

ダニエル

4

2 に答える 2

1

あなたの変換コードは良いです。XMLからJsonValueに変換し直すには、JsonValueExtensionsWebAPIのクラスを使用できます。

// Convert JsonValue to XML string
public static string ToXmlString(this JsonValue instance) {
    using (var ms = new MemoryStream()) {
        using (var xdw = XmlDictionaryWriter.CreateTextWriter(ms)) {
            instance.Save(xdw);
            xdw.Flush();
            return Encoding.UTF8.GetString(ms.ToArray());
        }
    }
}

// Convert XML string to JsonValue
public static JsonValue FromXmlString(this string jsonAsXml) {
    using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonAsXml))) {
        using (var xdr = XmlDictionaryReader.CreateTextReader(ms, XmlDictionaryReaderQuotas.Max))) {
            return JsonValueExtensions.Load(xdr);
        }
    }
}
于 2011-11-03T18:23:27.413 に答える
0

これはあなたのために働きませんか?

XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(json);
于 2011-11-03T13:55:12.063 に答える