【问题标题】:ASP.NET Pass Variable to JSON Deserialized HTTP Response ObjectASP.NET 将变量传递给 JSON 反序列化 HTTP 响应对象
【发布时间】:2021-05-11 13:26:56
【问题描述】:

有没有一种好方法可以动态传递字符串变量来代替反序列化的对象定义?我的意思是,下面的代码 sn-p 是反序列化 JSON 响应对象的正确语法,以便将返回的数据类型存储在数据库中以供进一步处理。

        string inputSymbol = "SNAP";

        var client = new RestClient("https://api.tdameritrade.com/v1/marketdata/" + inputSymbol + "/quotes");
        client.Timeout = -1;
        var request = new RestRequest(Method.GET);
        request.AddHeader("Authorization", "Bearer " + ReadAccessToken());
        IRestResponse response = client.Execute(request);

        dynamic quote = JsonConvert.DeserializeObject(response.Content);

        string closePrice = quote.SNAP.closePrice;
        string symbol = quote.SNAP.symbol;
        string openPrice = quote.SNAP.openPrice;
        string highPrice = quote.SNAP.highPrice;
        string lowPrice = quote.SNAP.lowPrice;
        string lastPrice = quote.SNAP.lastPrice;
        string volume = quote.SNAP.totalVolume;

这是一个简短的 JSON 响应示例供参考 -

{ “折断”: { “符号”:“SNAP”, "openPrice": 56.39, “高价”:64.44, “低价”:55.51, “关闭价格”:63.64 } }

例如,我需要指定 - quote.SNAP.closePrice - 如上面正确的语法来访问返回的 closePrice 并存储在数据库中。

我想要完成的是更多类似于以下示例的内容,用于基于传递的变量而不是静态的动态处理:

string inputSymbol = "SNAP";
string test = "closePrice";
string closeP = quote + "." + inputSymbol + "." + test; 

我已经通过详尽的测试尝试了许多不同的变体,但我要么无法对空引用执行运行时绑定,要么字符串或二进制数据在表中被截断,或者“字符串”不包含“SNAP”的定义' 尝试将响应转换为 ToString();这些在线错误消息搜索均不适用于我的用例。任何建议将不胜感激。

【问题讨论】:

    标签: asp.net json http


    【解决方案1】:

    您可以反序列化为具有indexerJObject 以执行此类动态查询:

    var response = @"{ 'SNAP': { 'symbol': 'SNAP', 'openPrice': 56.39, 'highPrice': 64.44, 'lowPrice': 55.51, 'closePrice': 63.64 } }";
    
    var quote = JsonConvert.DeserializeObject<JObject>(response); // Or JObject.Parse(response)
    string inputSymbol = "SNAP";
    string test = "closePrice";
    string closeP = quote[inputSymbol][test].ToString();
    Console.WriteLine(closeP); // prints 63.64
    

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多