C# 从XML转换后,如何在JSON中获得没有引号的数值

C# 从XML转换后,如何在JSON中获得没有引号的数值,c#,json,sql-server,xml,asp.net-web-api,C#,Json,Sql Server,Xml,Asp.net Web Api,我有一个来自SQLServer中存储过程的XML,该XML被转换为JSON,然后从WebAPI方法返回 这就是我将XML转换为JSON的方式 XmlDocument doc = new XmlDocument(); doc.LoadXml(reportXmlString); string jString = JsonConvert.SerializeXmlNode(doc); JObject jObject = JObject.Parse(jString); return jObject; 我

我有一个来自SQLServer中存储过程的XML,该XML被转换为JSON,然后从WebAPI方法返回

这就是我将XML转换为JSON的方式

XmlDocument doc = new XmlDocument();
doc.LoadXml(reportXmlString);
string jString = JsonConvert.SerializeXmlNode(doc);
JObject jObject = JObject.Parse(jString);
return jObject;
我想把JSON中的数值作为数字。。。无报价

我现在有什么

{
"Report": {
    "ReportItem": [
        {
            "Name": "MyObjectName",
            "Revenue": "99999.45"
        }
    ]
}
}
我想要什么

{
"Report": {
    "ReportItem": [
        {
            "Name": "MyObjectName",
            "Revenue": 99999.45
        }
    ]
}
}
我没有这个XML的任何类,我没有将它映射到任何地方,我只是从存储过程接收XML,将其转换为JSON并返回给用户

下面是我正在解析为JSON的XML

<Report xmlns:json="http://james.newtonking.com/projects/json">
<ReportItem>
    <Name>MyObjectName</Name>
    <Revenue>99999.45</Revenue>
</ReportItem>
</Report>

MyObjectName
99999.45
有没有办法在不为每个字段创建类型为的类的情况下做到这一点


谢谢。

有点凌乱,但您可以编写自己的JsonConverter(如果布尔值也以字符串形式出现,则无法将其修复为书面形式):

然后像这样使用它:

XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);
string jString = JsonConvert.SerializeXmlNode(doc);
JObject jObject = JObject.Parse(jString);

var fixedString = JsonConvert.SerializeObject(jObject, new NumberConverter());
var fixedObject = JObject.Parse(fixedString);

return fixedObject;

我认为它不知道里面是什么数据类型,所以它将所有内容都视为一个字符串,因为这是最安全的数据。我查看了Parse()的设置选项,但运气不好。始终有一个选项可以覆盖Parse()或使用更改的代码实现您所说的那种解析,测试某个东西是否可以解析为数字,然后将其保存为数字:/
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);
string jString = JsonConvert.SerializeXmlNode(doc);
JObject jObject = JObject.Parse(jString);

var fixedString = JsonConvert.SerializeObject(jObject, new NumberConverter());
var fixedObject = JObject.Parse(fixedString);

return fixedObject;