使用自定义列名称和自定义值保存 JSON
Save JSON with Custom Column name and custom value
我有这个代码
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;
}
}
}
}
我想得到 Json 喜欢
{Column:Value, Column:Value, Column:Value}
我正在使用 Newtonsoft.Json & HtmlAgilityPack。有什么办法可以得到 Json 吗?到目前为止,我认为我可以创建
{ {X = Column, Y= Value}, {X = Column, Y= Value} }
但这不是我想要的。
E: Table 看起来像
<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>
只要您的“列”名称是唯一的,您就可以简单地使用字典并对其进行序列化。即:
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"
}
我有这个代码
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;
}
}
}
}
我想得到 Json 喜欢
{Column:Value, Column:Value, Column:Value}
我正在使用 Newtonsoft.Json & HtmlAgilityPack。有什么办法可以得到 Json 吗?到目前为止,我认为我可以创建 { {X = Column, Y= Value}, {X = Column, Y= Value} }
但这不是我想要的。
E: Table 看起来像
<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>
只要您的“列”名称是唯一的,您就可以简单地使用字典并对其进行序列化。即:
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"
}