如何使用 Web Api 在 WCF Web 服务中将 JsonValue 对象序列化为 XML 或从 XML 序列化/反序列化?
因此,我一直在使用最新的 Web API 程序集开发 WCF Web 服务,并且我喜欢 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));
这种方法很好,但我不想这样做依赖于 Json.NET 库,因为我仅将它包含在这一种方法中。有没有办法在不使用 Json.NET 库的情况下做到这一点?
预先感谢您的任何帮助!
丹尼尔
So I have been working on a WCF web service using latest Web API assembly and I am loving the JsonValue object.
What I want to do is accept JSON which is bound to a JsonValue object, then convert that JsonValue object to a equivalent XML representation that can be passed into a stored procedure for processing. This eliminates the need to create objects to bind the JsonValue to and this keeps things fluid.
Then I would like to be able to select data out of the database in XML form and then convert that to JsonValue to be returned to the client.
I have been able to do convert the JsonValue to a string representation of XML by this extension method:
// 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());
}
}
}
Is there a better way to do this? This method is fine but I was just wondering.
I have also been able convert XML string value back to a JsonValue using Json.NET library to convert the XML string to a JSON string and then load the string into a JsonValue object like so:
// Return JSON representation of XML
return JsonValue.Parse(JsonConvert.SerializeXNode(xmlElement, Formatting.None, true));
This approach is fine but I would like to not have to be dependent on the Json.NET library since I am including it solely for this one method. Is there a way to do this without using the Json.NET library?
Thanks in advance for any help!
Daniel
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的转换代码很好。要将 XML 转换回 JsonValue,您可以使用 Web API 中的
JsonValueExtensions
类:Your conversion code is good. To convert back from XML into JsonValue, you can use the
JsonValueExtensions
class in the Web APIs:这对你不起作用吗?
Does this not work for you?