我有以下XML
<table>
<name>Table 1</name>
<headers>
<header>Header 1</header>
<header>Header 2</header>
</headers>
<data>
<row>
<row_item>Item 1</row_item>
<row_item>Item 2</row_item>
</row>
<row>
<row_item>Item 3</row_item>
<row_item>Item 4</row_item>
</row>
</data>
</table>
现在,我可以使用内置的XmlSerializer类对此类进行反序列化。
[JsonObject("table")]
[XmlRoot("table")]
public class Table
{
[JsonProperty("name")]
[XmlElement("name")]
public string Name { get; set; }
[JsonProperty("headers")]
[XmlArray("headers"), XmlArrayItem("header")]
public List<string> Headers { get; set; } = new List<string>();
[JsonProperty("data")]
[XmlArray("data"), XmlArrayItem("row")]
public List<DataRow> Data { get; set; } = new List<DataRow>();
}
public class DataRow
{
[XmlElement("row_item")]
public List<string> DataRowItems { get; set; }
}
现在我需要将其转换为JSON,我使用Newtonsoft来完成此操作,但我面临的问题是当前的类结构将“DataRowItems”添加到JSON。
{
"table": [
{
"data": [
{
"DataRowItems": [
"Item 1",
"Item 2"
]
},
{
"DataRowItems": [
"Item 3",
"Item 4"
]
}
],
"headers": [
"Item 1",
"Item 2",
"Item 3"
],
"name": "Some text"
}
]
}
因为我需要把data
元素作为数组的数组发送,就像这样。
{
"table": [
{
"data": [
["Item 1", "Item 2", "Item 3"],
["Item 4", "Item 5", "Item 6"]
],
"headers": ["Column 1", "Column 2", "Column 3"],
"name": "Some text"
}
]
}
我怎样才能做到这一点呢?我已经尝试了各种XML和JSON属性,但似乎无法让它工作。我也尝试了使用List而不是List来正确创建JSON,但XML无法去序列化。
3条答案
按热度按时间mnemlml81#
删除DataRow并按如下方式放置嵌套列表:
我获得了:{“名称”:“aaa”,“标头”:[“H1”,“H2”,“H3”],“数据”:[[“i1”,“i2”],[“i3”,“i4”]]}
5m1hhzi42#
你可以试试这个,你不需要任何定制类
输出
或者如果你想要c#对象
sy5wg1nm3#
谢谢大家的建议,这是类中属性的最后设置,我用它来使它工作。
NestingLevel
项是使row_item
正确反序列化的关键。