У меня есть JSON, как показано ниже
{
"Title": null,
"ProjectName": {
"@Label": "Project Name",
"Value": "Test Project Name",
"@Template": ""
},
"ModelNo": {
"@Label": "Model",
"Value": "Test Model Number",
"@Template": ""
}
}
Я хочу преобразовать его в xml, как показано ниже:
<Root>
<Title>Test Title</Title>
<ProjectName Label = "Project Name" Template = "">Test Project Name</ProjectName>
<ModelNo Label = "Model" Template = "">Test Model Number</ModelNo>
</Root>
В настоящее время я использовал что-то от JsonConvert.DeserializeXmlNode(Json.ToString()) и добавил XmlAttribute, результат будет
<Root>
<Title>Test Title</Title>
<ProjectName Label = "Project Name" Template = ""><Value>Test Project Name</Value></ProjectName>
<ModelNo Label = "Model" Template = ""><Value>Test Model Number</Value></ModelNo>
</Root>
Как убедиться в отсутствии Value и сопоставить значение с текстом xml
Откуда берутся эти XML-тексты?





Вы можете заменить/создать новый JSON через LINQ to JSON API. Например (при условии, что исходные значения находятся в формате JSON, в противном случае анализируйте и манипулируйте jp.Value):
var js = """
{
"Title": "Test Title",
"ProjectName": {
"@Label": "Project Name",
"Value": "Test Project Name",
"@Template": ""
},
"ModelNo": {
"@Label": "Model",
"Value": "Test Model",
"@Template": ""
}
}
""";
var jObject = JObject.Parse(js);
var jsonProperties = jObject.Descendants()
.OfType<JProperty>()
.Where(jp => jp.Name == "Value")
.ToList();
foreach (JProperty jp in jsonProperties)
{
// replace "Value" with "#text" property name
jp.Replace(new JProperty("#text", jp.Value));
}
var deserializeXmlNode = JsonConvert.DeserializeXmlNode(jObject.ToString(), "Root");
Console.WriteLine(deserializeXmlNode.OuterXml);
Результат (отформатированный):
<Root>
<Title>Test Title</Title>
<ProjectName Label = "Project Name" Template = "">Test Project Name</ProjectName>
<ModelNo Label = "Model" Template = "">Test Model</ModelNo>
</Root>
Согласно документации кажется, что вы могли бы попробовать переименовать свойство
Valueв#textв вашем JSON.