在c#中将html转换为json

Posted

技术标签:

【中文标题】在c#中将html转换为json【英文标题】:Convert html to json in c# 【发布时间】:2017-10-01 01:04:15 【问题描述】:

我有一个 c# 帖子返回我的 html。我的帖子正在检查组织名称并返回具有该名称的组织列表。我的问题是帖子返回整个页面的 html,我只想要组织列表。我觉得应该转成json,还是有其他可能?

发布方式:

WebRequest request = WebRequest.Create("http://www.mfinante.ro/numeCod.html");
// Set the Method property of the request to POST.
request.Method = "POST";

// Create POST data and convert it to a byte array.
string postData = "judet=40&name=ORACLE&submit=Vizualizare";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Set the ContentType property of the WebRequest.
request.ContentType = "application/x-www-form-urlencoded";
// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;

// Get the request stream.
Stream dataStream = request.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close();

// Get the response.
WebResponse response = request.GetResponse();
// Display the status.
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Display the content.

Console.WriteLine(responseFromServer);
// Clean up the streams.
reader.Close();
dataStream.Close();
response.Close();

【问题讨论】:

1.从 html 中提取必要的信息 2. 构造对象 3. 转换为 json @LeiYang 你能帮我做这些东西吗? 【参考方案1】:

根据端点,您可能会很幸运地在请求中添加 Accept 标头,要求提供 JSON。

我不知道可能会在 WebRequest 上设置什么属性,但它可能类似于

request.Accept = "application/json";

这样,请求将要求服务器以 JSON 格式返回结果,这可能对您更有用。 如果失败,则必须从 HTML 中提取内容,构造一个对象,然后将该对象序列化为 JSON。

【讨论】:

返回json不起作用...如何从html中提取内容?【参考方案2】:

将 HTML 解析为 JSON 的最佳方法是

    使用 HTML Agility Pack 解析 HTML。

    根据您的 HTML 中的内容,您可以在 c# 中创建一个类并为其创建一个对象,或者如果 HTML 内容重复,您可以创建一个对象列表。

    Class MyItem
    
        int employeeId = 0;
        string employeeName = String.Empty;
    
    
    List<MyItem> list = new List<MyItem>();
    javascriptSerializer js = new JavaScriptSerializer();
    js.Serialize(list);
    

【讨论】:

【参考方案3】:

我会告诉你为什么你的问题会引起混淆。考虑 html 的例子:

<html>
<body>
<p> example of paragraph </p>
</body>     
</html>
 Example of json:

"employees":[
"firstName":"John", "lastName":"Doe",
"firstName":"Anna", "lastName":"Smith",
"firstName":"Peter", "lastName":"Jones"
]

json 是某种东西,在其上生成 html 或初始基础。因此,当您说要将 html 转换为 json 时,这确实令人困惑,因为无法弄清楚您要根据哪些规则进行此转换。或者在创建 json 时应该忽略/添加来自 html 的哪些标签。

【讨论】:

我只想在我的 json 中添加该 html 响应中表中的行

以上是关于在c#中将html转换为json的主要内容,如果未能解决你的问题,请参考以下文章

YamlDotNet 在 C# 中将 YAML 转换为 JSON

在C#中将对象转换为JSON字符串[重复]

在c#中将简单的json转换为字符串数组

在 C# 中将 JSON 数组转换为 XML

在c#中将json转换为数据表[重复]

如何在 C# 中将 Xml 转换为 Json,反之亦然