使用自定义列名称和自定义值保存 JSON
Posted
技术标签:
【中文标题】使用自定义列名称和自定义值保存 JSON【英文标题】:Save JSON with Custom Column name and custom value 【发布时间】:2021-12-09 02:37:04 【问题描述】:我有这个代码
foreach (var table in doc.DocumentNode.SelectNodes("//table[@id='formTbl']"))
foreach (var row in table.SelectNodes("tbody/tr"))
foreach (var cell in row.SelectNodes("td"))
if (X == 1)
Console.WriteLine($"Value: cell.InnerText");
X = 2;
string Value = cell.InnerText;
else if(X==2)
Console.WriteLine($"Column: cell.InnerText");
X = 1;
string Column = cell.InnerText;
我想获得像 Column:Value, Column:Value, Column:Value
我正在使用 Newtonsoft.Json 和 htmlAgilityPack。有没有办法得到那个Json?到目前为止,我认为我可以创建 X = Column, Y= Value, X = Column, Y= Value
,但这不是我想要的。
E:表格看起来像
<table>
<tr>
<td>Column1</td>
<td>Value1</td>
</tr>
<tr>
<td>Column2</td>
<td>Value2</td>
</tr>
<tr>
<td>Column3</td>
<td>Value3</td>
</tr>
<tr>
<td>Column4</td>
<td>Value4</td>
</tr>
</table>
【问题讨论】:
您显示的是数组或列表,不是吗?你能给出一个更真实的样本吗?如果你有一个像 "ColumnX, ColumnY, ..." 这样的表,那么它的 JSON 看起来像: ["ColumnX":"SomeValue", "ColumnY": "SomeValue", "ColumnX":"SomeValue ", "ColumnY": "SomeValue" ...] 我有这样的表 pastebin.com/xGb17QcA 我希望 json 看起来像 "Column1":"Value1","Column2":"Value2","Column3":"Value3"当 foreach 结束时,我想将其保存为 X.json(或 x.txt 等) 问题已编辑,以便所有人都能看到。 谢谢,现在我也可以看到了。我认为其中有一个错字,Column3 应该是 Column4 在最后一行?我是这么认为的。 是的,它的错字我会编辑它!感谢您的帮助。 【参考方案1】:如果您的“列”名称是唯一的,您可以简单地使用字典并将其序列化。即:
void Main()
var html =
@"<table id='formTbl'>
<tbody>
<tr>
<td>Column1</td>
<td>Value1</td>
</tr>
<tr>
<td>Column2</td>
<td>Value2</td>
</tr>
<tr>
<td>Column3</td>
<td>Value3</td>
</tr>
<tr>
<td>Column4</td>
<td>Value4</td>
</tr>
</tbody>
</table>";
var doc = new HtmlDocument();
doc.LoadHtml(html);
Dictionary<string, object> myDict = new Dictionary<string, object>();
foreach (var table in doc.DocumentNode.SelectNodes("//table[@id='formTbl']"))
foreach (var row in table.SelectNodes("tbody/tr"))
var cells = row.SelectNodes("td");
myDict.Add(cells[0].InnerText, cells[1].InnerText);
var json = JsonConvert.SerializeObject(myDict, Newtonsoft.Json.Formatting.Indented);
Console.WriteLine(json);
编辑:这输出:
"Column1": "Value1",
"Column2": "Value2",
"Column3": "Value3",
"Column4": "Value4"
【讨论】:
以上是关于使用自定义列名称和自定义值保存 JSON的主要内容,如果未能解决你的问题,请参考以下文章
OpenCSV:如何使用自定义列标题和自定义列位置从 POJO 创建 CSV 文件?