将JSON转换为XML,然后再次转换为JSON



我有以下格式的JSON文件,该文件具有不同类型的值(字符串、数字、布尔值和Null(。我想将这个JSON转换为xml格式以进行一些数据处理,然后我想转换回相同的JSON格式。需要确保不会丢失任何数据类型。这些数字在双引号中,那么它应该是相同的,如果某个数字在没有双引号的情况下,那么它就应该没有双引号。

{
"Source": "WEB",
"CodePlan": 5,
"PlanSelection": "1",
"PlanAmount": "500.01",
"PlanLimitCount": 31,
"PlanLimitAmount": "3000.01",
"Visible": false,
"Count": null
}

目前,我尝试将JsonConvert对象转换为serializeObject和DeserializeObject,但它丢失了数值,并将所有内容转换为双引号。

请提出适当的处理方法。

看看使用JSON.net,然后可以使用它将JSON转换为XML

string json = @"{
'@Id': 1,
'Email': 'james@example.com',
'Active': true,
'CreatedDate': '2013-01-20T00:00:00Z',
'Roles': [
'User',
'Admin'
],
'Team': {
'@Id': 2,
'Name': 'Software Developers',
'Description': 'Creators of fine software products and services.'
}
}";
XNode node = JsonConvert.DeserializeXNode(json, "Root");

此处的文档

然后,在完成处理后,您可以将XML转换回JSON,如下所示:

string xml = @"<?xml version='1.0' standalone='no'?>
<root>
<person id='1'>
<name>Alan</name>
<url>http://www.google.com</url>
</person>
<person id='2'>
<name>Louis</name>
<url>http://www.yahoo.com</url>
</person>
</root>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
string json = JsonConvert.SerializeXmlNode(doc);

此处的文档

我的回答与Adam H的回答略有不同。首先,我要声明一个要使用的类:

/* Note I am using string instead of double for PlanAmount and PlanLimitAmount because you have 
* those values surrounded by double quotes. If you want to use double instead make sure your JSON does not 
* have double quotes around the numbers */
public class MyClass 
{
public string Source { get; set; }
public int CodePlan { get; set; }
public string PlanSelection { get; set; }
public string PlanAmount { get; set; }
public int PlanLimitCount { get; set; }
public string PlanLimitAmount { get; set; }
public bool Visible { get; set; }
public int? Count { get; set; }
}

然后使用几个方法,您应该能够将该类序列化为JSON或XML:

// You can convert the JSON to an instance of MyClass like this
public MyClass ConvertJsonToMyClass(string json)
{
return JsonConvert.DeserializeObject<MyClass>(json);
}
// You can also convert an instance of MyClass to JSON like this
public string ConvertMyClassToJson(MyClass obj)
{
return JsonConvert.SerializeObject(obj);
}
// You can also serialize your object to XML
public MyClass ConvertMyClassToXML(MyClass obj)
{
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
XmlSerializer serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(stringWriter, obj);
return stringWriter.ToString();
}

除此之外,您可能只需将文本反序列化为MyClass的实例,然后直接比较对象,而不是序列化为XML并以这种方式进行比较。

最新更新