我有一个看起来像
的字符串{"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等),我想在“:”之前和“”之后获取文本,并删除不必要的内容,但我不是真的知道这是一个很好的方法或如何做到这一点。 任何帮助,将不胜感激。 谢谢!
答案 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);
答案 1 :(得分:1)
我相信您正在尝试使用某些crypto-currency
交换的ticker API来创建桌面通知应用。几个月前我创建了一个,这就是我所做的:
JSON
网站将C#
转换为json2csharp.com
课程。将其命名为JsonClass
Newtonsoft.Json
项目中导入的C#
个包。使用以下代码初始化类
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