C# - 将 HTML 无序列表转换为 JSON 数组

标签 c# asp.net string json

我想将存储为 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/

相关文章:

java - 在 Java 中分解多项式字符串

c# - Entity Framework 外键作为主键代码优先

c# - 预编译一个非常大的正则表达式

asp.net - 如何在 asp.net 中向客户端发送 "Access Denied"http 响应?

python - Python 中的类型提示特定字符​​串列表

php - 如何并排正确显示两个字符串

c# - 在 Entity Framework ADO.NET 实体数据模型中导入 SQL Server 函数时出错

c# - 如何删除 asp.net 中的特定 session ?

javascript - 在javascript函数中更改服务器端控件的值

c# - Visual Studio 2008 断点不起作用