我正在使用JSON。当我将XML转换为JSON时,它不会将布尔值保留为布尔值。它为布尔值提供双引号。我正在使用Json.Net进行转换。
这是我的XML:
<root>
<file>
<field_name>contains_mrn</field_name>
<field_value>true</field_value>
</file>
</root>
输出:
{
"file": {
"field_name": "contains_mrn",
"field_value": "true"
}
}
但是我的期望是:
{
"file": {
"field_name": "contains_mrn",
"field_value": true
}
}
答案 0 :(得分:1)
如果Json是最终所需的输出,则您可能应该走更长的路线。您需要先将XML进行反序列化,然后再将其序列化为JSON。
var serializer = new XmlSerializer(typeof(Root));
var obj = (Root)serializer.Deserialize(new StringReader(str));
var json = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.Indented);
类定义如下。
[XmlRoot(ElementName="file")]
public class File
{
[XmlElement(ElementName="field_name")]
[JsonProperty(PropertyName = "field_name")]
public string Field_name { get; set; }
[JsonProperty(PropertyName = "field_value")]
[XmlElement(ElementName="field_value")]
public bool Field_value { get; set; }
}
[XmlRoot(ElementName="root")]
public class Root
{
[XmlElement(ElementName="file")]
[JsonProperty(PropertyName = "file")]
public File File { get; set; }
}
这将为您提供所需的输出。
{
"file": {
"field_name": "contains_mrn",
"field_value": true
}
}