获取2个字符之间的字符串C#

时间:2018-04-03 14:12:52

标签: c# string

我有一个看起来像

的字符串
{"BTC":{"USD":7358.8},"ETH":{"USD":402.78},"LTC":{"USD":125.37},"DASH":{"USD":335.73},"XMR":{"USD":187.2},"NXT":{"USD":0.1272},"ZEC":{"USD":204.82},"XRP":{"USD":0.5296},"WAVES":{"USD":4},"BCH":{"USD":705.74},"EOS":{"USD":5.89},"XLM":{"USD":0.229},"ADA":{"USD":0.1601},"NEO":{"USD":52.03},"IOT":{"USD":1.07}}

我想得到的是名字(例如:BTC,ETH等),我想在“:”之前和“”之后获取文本,并删除不必要的内容,但我不是真的知道这是一个很好的方法或如何做到这一点。 任何帮助,将不胜感激。 谢谢!

3 个答案:

答案 0 :(得分:4)

字符串似乎是JSON,所以为什么不按原样解析呢?

public class ExchangeRate
{
    public decimal USD { get; set; }
}

static class Program
{
    static void Main(string[] args)
    {
        string s = "{\"BTC\":{\"USD\":7358.8},\"ETH\":{\"USD\":402.78},\"LTC\":{\"USD\":125.37},\"DASH\":{\"USD\":335.73},\"XMR\":{\"USD\":187.2},\"NXT\":{\"USD\":0.1272},\"ZEC\":{\"USD\":204.82},\"XRP\":{\"USD\":0.5296},\"WAVES\":{\"USD\":4},\"BCH\":{\"USD\":705.74},\"EOS\":{\"USD\":5.89},\"XLM\":{\"USD\":0.229},\"ADA\":{\"USD\":0.1601},\"NEO\":{\"USD\":52.03},\"IOT\":{\"USD\":1.07}}";

        var er = JsonConvert.DeserializeObject<Dictionary<string, ExchangeRate>>(s);

        Console.ReadKey();
    }
}

如果您需要多种货币,可以使用:

var er = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, decimal>>>(s);

相关:Easiest way to parse JSON response

答案 1 :(得分:1)

我相信您正在尝试使用某些crypto-currency交换的ticker API来创建桌面通知应用。几个月前我创建了一个,这就是我所做的:

  1. 使用JSON网站将C#转换为json2csharp.com课程。将其命名为JsonClass
  2. 我的Newtonsoft.Json项目中导入的C#个包。
  3. 使用以下代码初始化类

    JsonTextReader reader = new JsonTextReader(new StringReader(JsonString));
    if (reader.Read())
    {
        JsonSerializer serializer = new JsonSerializer();
        jsonClassObject = serializer.Deserialize<jsonClass>(reader);
    }
    

答案 2 :(得分:0)

来自你的评论:

  

我想得的是名字(例如:BTC,ETH等)

听起来你只想要JSON的

考虑到这一点你甚至不需要关心JSON是什么对象,只是它的某些对象的字典。我们使用一点LINQ来选择所有键和中提琴:

//Gives an List<string> that is a collection of all the coin names
List<string> coins = JsonConvert.DeserializeObject<Dictionary<string, object>>(someJson)
                .Select(x => x.Key)
                .ToList();

这会产生包含此数据的List<string>

BTC,
ETH,
LTC,
DASH,
XMR,
NXT,
ZEC,
XRP,
WAVES,
BCH,
EOS,
XLM,
ADA,
NEO,
IOT

小提琴here