【问题标题】:C# - Convert HTML unordered list to JSON arrayC# - 将 HTML 无序列表转换为 JSON 数组
【发布时间】:2011-09-16 04:57:32
【问题描述】:

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

【问题讨论】:

  • 我认为你不应该在服务器端进行这种转换,使用jQuery并在客户端实现它。
  • 为什么需要在服务器端做这个?
  • @Paperjam:我正在屏幕上抓取一个网站(经许可),所以我所拥有的只是存储为字符串的网站源(是的,这太可怕了)。
  • @Braveyard:查看更新后的问题并说明原因。
  • @Fulvio 以及您在哪些方面需要帮助?

标签: c# asp.net string json


【解决方案1】:

建议的方法:

由于您将广泛解析 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; }
    }

现在您已经准备好作为类的结构,您可以使用从 HTML 中解析的所有元素构建一个 List&lt;MyItem&gt;

转换为 JSON 的最后一步是:

List<MyItem> list = .... the list constructed
JavascriptSerializer js = new JavascriptSerializer();
string jsonOutput = js.Serialize(list);

【讨论】:

【解决方案2】:

由于您正在抓取屏幕,我建议使用Html Agility Pack 来读取 HTML(使用 XPath),然后使用 JSON 库,例如 JSON.net 或使用 JavaScriptSerializer(System.Web.Script .Serialization.JavaScriptSerializer) 类将 HAP 对象序列化为 JSON。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-30
    • 2015-08-26
    • 2013-08-22
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    相关资源
    最近更新 更多