我想将无序列表转换为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>
答案 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。