首页 > 解决方案 > 我想要帮助如何从 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

只取第一个,另一个只是跳过。

标签: c#

解决方案


这里的第一个问题是你的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 和价格),因此我们将它们打印到控制台。

您可以在此处查看并运行此代码。


推荐阅读