我想将存储为 string
的无序列表转换为 JSON 数组。
我需要这个的原因是因为我正在屏幕抓取网站(经许可)所以我所得到的只是网站源存储为 string
(是的,这太可怕了)直到他们完成他们的 API(是的,他们同意在此过程中不更改任何 HTML)。 :-)
HTML:
<ul class="column">
<li><a href="/view.php?m=48902&g=313433">Item 1</a></li>
<li><a href="/view.php?m=09844&g=313433">Item 2</a></li>
<li><a href="/view.php?m=23473&g=313433">Item 3</a></li>
</ul>
JSON:
{"items":[
{
id: 1,
url: "/view.php?m=48902&g=313433",
name: "Item 1",
m: 48902,
g: 313433
},
{
id: 2,
url: "/view.php?m=09844&g=313433",
name: "Item 2",
m: 09844,
g: 313433
},
{
id: 3,
url: "/view.php?m=23473&g=313433",
name: "Item 3",
m: 23473,
g: 313433
}
]}
最佳答案
建议的方法:
由于您将大量解析 HTML,因此我建议您下载 HTMLAgilityPack并用它来解析你的 HTML。网站上有一些示例代码。它还支持 LINQ,因此解析 HTML 应该相对容易。
就转换为 JSON 而言,我的建议是创建一个具有所需结构的类;例如:
public class MyItem
{
public int id { get; set; }
public string url { get; set; }
public string name { get; set; }
public int g { get; set; }
public int m { get; set; }
}
现在您已经准备好作为类的结构,您可以构建一个 List<MyItem>
包含您从 HTML 中解析的所有元素。
转换为 JSON 的最后一步是:
List<MyItem> list = .... the list constructed
JavascriptSerializer js = new JavascriptSerializer();
string jsonOutput = js.Serialize(list);
关于C# - 将 HTML 无序列表转换为 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7440325/