c# - 我想要帮助如何从 http json 的响应中获取文本,这里是请求的来源
问题描述
我想要帮助如何从 http 的响应中获取文本,这里是请求的来源
var request = (HttpWebRequest)WebRequest.Create("https://xxxx.com/");
var postData = "{"+'"'+"get"+ '"' +":100}";
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "PUT";
request.ContentType = "application/json";
request.Headers["X"] = "83ed3926";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
现在我希望源代码可以搜索:responseString
例子:
{"auctionInfo":[{"IDEF":224454585435,"itemData":2 ","buyNowPrice":100,"
,{"IDEF":224454839937,"itemData":","buyNowPrice":200,"{"IDEF":315779793672,"timestamp":1539055787,"formation":"f352","Price":100,"assetrd":1,"rating":","buyNowPrice":300,"
我想要获取第一个 IDEF 和 buynowprice 并将它们添加到两个字符串的方法。
如果将运行代码的示例将是:
IDEF = 224454839937
buyNowPrice = 100
只取第一个,另一个只是跳过。
解决方案
这里的第一个问题是你的JSON(文本)被破坏了......
它应该如下所示:
{
"auctionInfo": [
{
"IDEF": 224454585435,
"itemData": 2,
"buyNowPrice": 100
},
{
"IDEF": 224454839937,
"itemData": 0,
"buyNowPrice": 200
},
{
"IDEF": 315779793672,
"timestamp": 1539055787,
"formation": "f352",
"Price": 100,
"assetrd": 1,
"rating": 0,
"buyNowPrice": 300
}
]
}
您可以在此站点上探索上面的 JSON 。
现在 JSON 格式正确,您可以使用名为 NewtonSoft JSON 的 Nuget 包对其进行解析:
using System;
public class Program
{
public static void Main()
{
var json = "{\"auctionInfo\":[{\"IDEF\":224454585435,\"itemData\":2,\"buyNowPrice\":100},{\"IDEF\":224454839937,\"itemData\":0,\"buyNowPrice\":200},{\"IDEF\":315779793672,\"timestamp\":1539055787,\"formation\":\"f352\",\"Price\":100,\"assetrd\":1,\"rating\":0,\"buyNowPrice\":300}]}";
dynamic theObject = Newtonsoft.Json.Linq.JObject.Parse(json);
dynamic auctionInfo = (Newtonsoft.Json.Linq.JArray)theObject.auctionInfo;
var theFirstItem = auctionInfo[0];
var idef = theFirstItem.IDEF;
var price = theFirstItem.buyNowPrice;
Console.WriteLine(string.Format("IDEF: {0}, Price: {1}",idef,price));
}
}
JSON 的第一部分是一个对象(这就是我们解析为 a 的原因JObject
),但它包含一个名为“auctionInfo”的数组。因此,我们必须theObject.auctionInfo
转换为 a JArray
。最后,你想要数组中的第一个项目,所以我们在 0 索引处获取项目......
索引 0 处的项目有您想要的(IDEF 和价格),因此我们将它们打印到控制台。
您可以在此处查看并运行此代码。
推荐阅读
- css - 使用 SVG 文件,而不是 inline-svg,作为 CSS 掩码?
- blazor - 有没有办法在不覆盖现有类名的情况下将类名添加到 blazor 组件?
- php - 将命令记录器输出保存到日志文件和控制台
- apache-spark-sql - Spark JDBC 写入 Teradata:由于死锁错误导致多个 Spark 任务失败,Transaction ABORTed 导致 Stage 失败
- python - 错误消息说计数未定义
- javascript - TypeError:无法读取未定义的属性“bulkDelete”
- python - Python中的三重嵌套字典到数据框
- stored-procedures - 多个会话执行雪花程序插入到同一个表中
- swift - 无法从字典中提取数据
迅速 - ruby-on-rails - RAILS 版本不一致