从c#中的字符串获取变量数据

本文关键字:获取 变量 数据 字符串 | 更新日期: 2023-09-27 18:26:40

我已经从url下载了数据,如下所示。

//[
  {
    "id": "2932675",
    "t": "GNK",
    "e": "LON",
    "l": "915.00",
    "l_fix": "915.00",
    "l_cur": "GBX915.00",
    "s": "0",
    "ltt": "5:08PM GMT",
    "lt": "Dec 11,
    "5": 08PM
    "GMT",
    "
    "lt_dts": "2015-12-11T17:08:26Z",
    "c": "-7.50",
    "c_fix": "-7.50",
    "cp": "-0.81",
    "cp_fix": "-0.81",
    "ccol": "chr",
    "pcls_fix": "922.5"
  }
]

并希望从上面的字符串中得到以下变量t:GNK和l:915,并在之后完成

void method1()
   {
      string scrip = textBox1.Text;
      string s;
      WebClient wc = new WebClient();
      string url = ("http://finance.google.com/finance/infoclient=ig&q=NSE:" + scrip);
      s = wc.DownloadString(url);
      textBox2.Text = s.Substring(58, 6);
      textBox3.Text = s;
     }
        public class LatestPrice
    {
        public string id { get; set; }
        public string Name { get; set; }
        public string type { get; set; }
        public string l { get; set; }
        public string l_fix { get; set; }
        public string l_cur { get; set; }
        public string s { get; set; }
        public string lt { get; set; }
        public string lt_dts { get; set; }
        public string c { get; set; }
        public string c_fix { get; set; }
        public string cp { get; set; }
        public string cp_fix { get; set; }
        public string ccol { get; set; }
        public string pcls_fix { get; set; }
    }
    public string[][] convert_string()
    {
        string[][] stockprice = null;
        string stockprice1 = null;
        string getdownloadstr = getstring();
        stockprice1 = getdownloadstr.Replace("//", "").Trim();
        var v = JsonConvert.DeserializeObject<List<LatestPrice>>(stockprice1);
        }

我已经对程序进行了更改,但是如何访问t:gnk值或l=915值

从c#中的字符串获取变量数据

您可以将JArray转换为JObject,并可以直接通过JOject parameter键获取值。

string jsonStr = "[{ '"id'":'"2932675'", '"t'" : '"GNK'" , '"e'" : '"LON'" , '"l'" : '"915.00'" , '"l_fix'" : '"915.00'" , '"l_cur'" : '"GBX915.00'" , '"s'": '"0'" , '"ltt'":'"5:08PM GMT'" , '"lt'" : '"Dec 11 5:08PM GMT'"}]";
var obj = JsonConvert.DeserializeObject<JArray>(jsonStr).ToObject<List<JObject>>().FirstOrDefault();
Console.WriteLine("t = " + obj["t"]);
Console.WriteLine("l = " + obj["l"]);

以上将输出打印为

t=GNK
l=915.00

你可以参考这个为你的问题创建的小提琴。

分析它,在拆分,然后(split on:)将每一行添加到字典中,使用t作为键,另一行作为值。然后你可以简单地通过t和l来访问。用逗号分割整个字符串—您有一个item:value列表,然后用冒号分割并添加到字典中。然后在dictionary中查找信息getvalue=dictionary[key];

您可以使用Regex来匹配您需要的数据:

string t = Regex.Match(str, "'"t'" : '"[A-Z]{3}'"").Value;
string l = Regex.Match(str, "'"l'" : '"''d{3}.''d{2}'"").Value;

其中str是您下载的数据字符串。

字符串t与格式为"t" : "XXX"的子字符串匹配,其中XXX可以包含任何大写字符。

字符串l与格式为"l" : "XXX.XX"的子字符串匹配,其中XXX.XX可以包含任何数字。

1。在解决方案资源管理器的参考中添加NewtonSoft.Json。步骤(参考[右键点击]->管理NuGetPackage->搜索"Json.Net"->安装它们)

  1. 使用Newtonsoft.Json添加

代码:

public class CurrentValue
    {
        public string id { get; set; }
        public string Name { get; set; }
        public string type { get; set; }
        public string l { get; set; }
        public string l_fix { get; set; }
        public string l_cur { get; set; }
        public string s { get; set; }
        public string lt { get; set; }
        public string lt_dts { get; set; }
        public string c { get; set; }
        public string c_fix { get; set; }
        public string cp { get; set; }
        public string cp_fix { get; set; }
        public string ccol { get; set; }
        public string pcls_fix { get; set; }
    }

创建一个方法并使用以下代码

 Uri url = new Uri("http://www.google.com/finance/info?q=NSE%3A" + NameofCompany);
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.ContentType = "application/json; charset=utf-8";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string Responsecontent = new StreamReader(response.GetResponseStream()).ReadToEnd();
                string CurrentContent = Responsecontent.Replace("//", "").Trim();
                var v = JsonConvert.DeserializeObject<List<CurrentValue>>(CurrentContent);

现在"var v"拥有类"CurrentValue"的所有数据。

您可以加载一个包含所有"公司名称"的xml文件,并将其加载到FormLoad上。使用for循环获取所有"公司名称"的数据

我以以下方式完成

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Web;
using System.Timers;
using System.IO;
using System.Net;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Text.RegularExpressions;

namespace google_downloader
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            WebClient wc = new WebClient();
            string s= wc.DownloadString("http://finance.google.com/finance/info?client=ig&q=NSE:sbin");
            //index for t 
            int index7= s.IndexOf('t');
            int index8 = s.IndexOf('e');
            textBox1.Text = ("frist index is" + index7 +  "second indes is   " + index8);
            textBox1.Text = s.Substring(index7+6,(index8-index7)-10);


       }
    }
}