首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JavaScriptSerializer中使用c#将JSON转换成XML

在JavaScriptSerializer中使用c#将JSON转换成XML
EN

Stack Overflow用户
提问于 2013-08-29 06:38:21
回答 3查看 6.4K关注 0票数 1

我有一个JSON结构,如下所示。

代码语言:javascript
运行
复制
json={
    "page": {
        "mode": "2",
        "ref": "user"
    }
}

我使用以下代码将JSON转换为XML。

参考资料:http://www.flowgearcoder.net/2013/04/03/convert-between-json-and-xml

代码语言:javascript
运行
复制
  var dynamicObject = new System.Web.Script.Serialization.JavaScriptSerializer().DeserializeObject(Json);
        System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(dynamicObject.GetType());

        MemoryStream ms = new MemoryStream();
        serializer.Serialize(ms, dynamicObject);

        Xml = System.Text.Encoding.UTF8.GetString(ms.ToArray());

在执行xmlSerializer转换时,我将得到以下错误。

由于实现了System.Collections.Generic.Dictionary`2[System.String,,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089,System.Object,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]类型不受支持。

有人能帮我解决这个问题吗?

EN

回答 3

Stack Overflow用户

发布于 2013-08-29 16:07:08

可以使用Json.Net轻松地将其转换为xml。

代码语言:javascript
运行
复制
string xml = JsonConvert.DeserializeXNode(json).ToString();
票数 1
EN

Stack Overflow用户

发布于 2013-08-29 09:35:29

JavaScriptSerializer.DeserializeObject将json字符串转换为Dictionary<String, Object>

XMLSerializer不支持字典。因此,如果您自己创建json,您可能需要更改它的结构,并使用JavaScriptSerializer.Deserialize<T>方法将其转换为特定的类,然后将其序列化为XML。

票数 0
EN

Stack Overflow用户

发布于 2013-08-29 13:30:32

作为JavaScriptSerializer的替代方案,您可以使用Json.NET

代码语言:javascript
运行
复制
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Xml;

public class Test
{
    public static void Main()
    {
        var json = @"{""page"":  {""mode"": ""2"", ""ref"": ""user""}}";
        var xmlDocument = new XmlDocument();
        var d=  xmlDocument.CreateXmlDeclaration("1.0","utf-8","yes");
        xmlDocument.AppendChild(d);
        var xml = JsonConvert.DeserializeXmlNode(json);
        var root = xmlDocument.ImportNode(xml.DocumentElement,true);
        xmlDocument.AppendChild(root);
        Console.WriteLine(xmlDocument.OuterXml);
    }
}

产出:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<page><mode>2</mode><ref>user</ref></page>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18503845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档