我想要帮助如何从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
只采取第一个,其他的只是跳过。
答案 0 :(得分:0)
如您所见,数据json string
内具有某种结构,并且是这样的对象:
public class Item
{
public int IDEF { get; set; }
public int itemData { get; set; }
public float buyNowPrice { get; set; }
}
所以这是代表该json字符串内部结构的c类。
剩下的就是Deserialize
该json字符串,您将像这样进行操作:
List<Item> items = JsonConvert.DeserializeObject<List<Item>>(yourJsonStringHere);
在那里,列出了Item
类的所有对象。
答案 1 :(得分:0)
这里的第一个问题是您的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
}
]
}
您可以在this site上浏览该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的第一部分是一个对象(这就是我们解析为JObject
的原因),但是它包含一个名为“ auctionInfo”的数组。因此,我们必须将theObject.auctionInfo
强制转换为JArray
。最后,您需要数组中的第一个项目,因此我们将项目取到0索引处...
索引0的项目具有所需的内容(IDEF和价格),因此我们将其打印到控制台上。
您可以看到此代码并运行here。