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

获取2个字符之间的字符串C#,c#,string,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

我有一根绳子,看起来像

{"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等),我想在“:”之前和“””之后得到文本,并删除不必要的内容,但我真的不知道这是否是一个好方法或如何做到这一点。 任何帮助都将不胜感激。
谢谢!

字符串似乎是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();
    }
}
公共类交换率
{
公共十进制USD{get;set;}
}
静态类程序
{
静态void Main(字符串[]参数)
{
10.7月7日,,““美元”兑:402.78},,“LTC\”,,“LTC\”:,,“LTC\”:{“美元”:125.37},倒倒倒倒倒倒“BTC\””,,,“BTC\””,,,“BTC\”,,,“BTC\”:,,,,,,,,,,,,,,,,,,“BTC\”,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::,,,,,,,,,,,,,,:{“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;
Console.ReadKey();
}
}
如果您希望使用多种货币,您可以使用:

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

相关:

字符串似乎是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();
    }
}
公共类交换率
{
公共十进制USD{get;set;}
}
静态类程序
{
静态void Main(字符串[]参数)
{
10.7月7日,,““美元”兑:402.78},,“LTC\”,,“LTC\”:,,“LTC\”:{“美元”:125.37},倒倒倒倒倒倒“BTC\””,,,“BTC\””,,,“BTC\”,,,“BTC\”:,,,,,,,,,,,,,,,,,,“BTC\”,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,::::::::::::::,,,,,,,,,,,,,,:{“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;
Console.ReadKey();
}
}
如果您希望使用多种货币,您可以使用:

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

相关:

我相信您正在尝试使用一些
加密货币
exchange的ticker API来创建一个可能的桌面通知应用程序。几个月前我创建了一个,下面是我所做的:

  • 使用
    json2csharp.com
    website将
    JSON
    转换为
    C
    类。命名为
    JsonClass
  • 在我的
    C
    项目中导入了
    Newtonsoft.Json
  • 使用以下代码初始化类

    JsonTextReader reader = new JsonTextReader(new StringReader(JsonString));
    if (reader.Read())
    {
        JsonSerializer serializer = new JsonSerializer();
        jsonClassObject = serializer.Deserialize<jsonClass>(reader);
    }
    
    JsonTextReader reader=newjsontextreader(newstringreader(JsonString));
    if(reader.Read())
    {
    JsonSerializer serializer=新的JsonSerializer();
    jsonClassObject=serializer.Deserialize(读取器);
    }
    

  • 我相信您正在尝试使用一些
    加密货币
    exchange的ticker API创建一个桌面通知应用程序。几个月前我创建了一个应用程序,下面是我所做的:

  • 使用
    json2csharp.com
    website将
    JSON
    转换为
    C
    类。命名为
    JsonClass
  • 在我的
    C
    项目中导入了
    Newtonsoft.Json
  • 使用以下代码初始化类

    JsonTextReader reader = new JsonTextReader(new StringReader(JsonString));
    if (reader.Read())
    {
        JsonSerializer serializer = new JsonSerializer();
        jsonClassObject = serializer.Deserialize<jsonClass>(reader);
    }
    
    JsonTextReader reader=newjsontextreader(newstringreader(JsonString));
    if(reader.Read())
    {
    JsonSerializer serializer=新的JsonSerializer();
    jsonClassObject=serializer.Deserialize(读取器);
    }
    
  • 根据您的评论:

    我想得到的是姓名(例如: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();
    
    拨弄你的评论:

    我想得到的是姓名(例如: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();
    

    Fiddle

    这是JSON,只需使用JSON.NET反序列化为一个对象这是JSON,只需使用JSON.NET反序列化为一个对象是的,它是JSON,但它将包含约100个这样的条目,我必须手动编写您拥有的字符串,我认为这不是很有效。但非常感谢!@weaverbeaver这不是它的工作方式,w这是您的JSON来源?底线是您的JSON完全是一个
    字典
    ,因此请使用Patrick所说的
    JsonConvert.DeserializeObject
    方法,并传递任何JSON字符串。如果您的JSON与您的示例不一样,那么您需要提供一个已解决的JSON,非常感谢,很抱歉这个新手问题。是的,它是JSON,但它将包含大约100个这样的条目,我必须手动编写您的字符串,我认为这不是很有效。但非常感谢!@weaverbeaver这不是它的工作方式,您的JSON来自哪里?底线是您的JSON正是一个
    字典
    ,所以使用
    jsoninvert.DeserializeObject
    方法,如Patrick所说,并传递任何JSON字符串。如果您的JSON与您的示例不一样,那么您需要提供一个已解决的JSON,非常感谢,很抱歉这个新手问题。
    JsonConvert
    更易于使用。谢谢!我也会尝试。
    JsonConvert
    更易于使用。谢谢!我也会尝试。是的,这就是为什么在我想要的时候,这就是我做的,非常感谢!是的,这就是我想要的,这就是我做的,非常感谢!