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

时间:2011-09-16 04:57:33

标签: c# asp.net string json

我想将无序列表转换为JSON数组。

我需要这个的原因是因为我正在屏幕抓取一个网站(经过许可)所以我所拥有的只是网站源存储为string(是的,它很可怕),直到他们完成他们的API(是的,他们已同意不在此过程中更改任何HTML。 : - )

HTML:

string

JSON:

<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>

2 个答案:

答案 0 :(得分:3)

提议的方法:

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

答案 1 :(得分:0)

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