C# C在字符串中查找文本,然后提取变量
我把Steam Web API弄得一团糟。我正在尝试创建一个函数,该函数将查找一段文本,然后提取另一段文本,这将根据我使用函数查找的用户而变化 我尝试过使用IndexOf,但由于我想提取的文本长度可能会有所不同,这相当困难 我想从中提取字符串的Json响应如下所示,但会因我查找的每个用户而异C# C在字符串中查找文本,然后提取变量,c#,json,string,search,C#,Json,String,Search,我把Steam Web API弄得一团糟。我正在尝试创建一个函数,该函数将查找一段文本,然后提取另一段文本,这将根据我使用函数查找的用户而变化 我尝试过使用IndexOf,但由于我想提取的文本长度可能会有所不同,这相当困难 我想从中提取字符串的Json响应如下所示,但会因我查找的每个用户而异 { "response": { "game_count": 54, "games": [ { "appid": 240, "p
{
"response": {
"game_count": 54,
"games": [
{
"appid": 240,
"playtime_forever": 51842
},
{
"appid": 260,
"playtime_forever": 43
},
{
"appid": 300,
"playtime_forever": 191
},
{
"appid": 320,
"playtime_forever": 130
},
{
"appid": 340,
"playtime_forever": 4
},
{
"appid": 520
},
{
"appid": 4000,
"playtime_2weeks": 798,
"playtime_forever": 61803
},
{
"appid": 440,
"playtime_forever": 19466
},
{
"appid": 105600,
"playtime_forever": 2084
},
{
"appid": 72850,
"playtime_forever": 2010
},
{
"appid": 380,
"playtime_forever": 91
},
{
"appid": 400,
"playtime_forever": 76
},
{
"appid": 420
},
{
"appid": 220,
"playtime_forever": 827
},
{
"appid": 550,
"playtime_forever": 906
},
{
"appid": 33910,
"playtime_forever": 77
},
{
"appid": 33930,
"playtime_2weeks": 1714,
"playtime_forever": 31904
},
{
"appid": 219540,
"playtime_forever": 0
},
{
"appid": 570
},
{
"appid": 205790
},
{
"appid": 22380,
"playtime_forever": 1119
},
{
"appid": 105400,
"playtime_forever": 134
},
{
"appid": 204030
},
{
"appid": 12120
},
{
"appid": 12250
},
{
"appid": 24010
},
{
"appid": 8190,
"playtime_forever": 723
},
{
"appid": 620,
"playtime_forever": 101
},
{
"appid": 644
},
{
"appid": 730,
"playtime_forever": 431
},
{
"appid": 10,
"playtime_forever": 396
},
{
"appid": 80
},
{
"appid": 100
},
{
"appid": 42680,
"playtime_forever": 65
},
{
"appid": 42690,
"playtime_forever": 1435
},
{
"appid": 22200
},
{
"appid": 113200,
"playtime_forever": 270
},
{
"appid": 20540
},
{
"appid": 55110
},
{
"appid": 43110
},
{
"appid": 9340
},
{
"appid": 50620
},
{
"appid": 4560
},
{
"appid": 55230,
"playtime_forever": 1354
},
{
"appid": 4540
},
{
"appid": 4570
},
{
"appid": 22370,
"playtime_forever": 305
},
{
"appid": 70,
"playtime_forever": 479
},
{
"appid": 70300,
"playtime_forever": 138
},
{
"appid": 220240,
"playtime_2weeks": 72,
"playtime_forever": 453
},
{
"appid": 107410,
"playtime_2weeks": 80,
"playtime_forever": 403
},
{
"appid": 40800,
"playtime_2weeks": 124,
"playtime_forever": 124
},
{
"appid": 12210,
"playtime_2weeks": 663,
"playtime_forever": 663
},
{
"appid": 12220,
"playtime_2weeks": 658,
"playtime_forever": 658
}
]
}
}
我想做的是搜索I.e.\appid \:440,然后能够获得后面的playtime_forever int。我不知道该怎么办。如果字符串具有设置的长度,我只能从Split函数获得帮助,因为这样我就可以返回我想要的数组索引
我非常抱歉,如果这件事说得不清楚,我会尽我最大的努力解释我想要实现的目标
提前感谢,
Isak正如评论所说,您看到的不是一个简单的字符串,所以不要尝试为它编写自己的解析器。这是一个包含对象集合的响应。这些对象似乎有3个字段: 阿皮德 永远的游戏时间 游戏时间2周
如果您想在代码中以本机方式使用这些属性,只需创建一个具有三个公共属性getter和setter的传输对象,其中每个属性与JSON字段具有相同的名称。然后只需使用System.WEb.Script命名空间的JavaScriptSerializer将集合反序列化为列表 您可以尝试将Json反序列化为动态对象,请看这里: 然后在应用集合中循环并检查appId=440
for(int i = 0; i <= deserializedResult.Count; i++)
{
if(deserializedResult[i] == 440)
....
}
似乎playtime\u forever并不总是可用的,所以我猜在访问它之前,您必须使用反射来查看playtime\u forever是否存在。您考虑过使用吗?您可以使用JSON序列化程序。或者您可以使用.NET中的正则表达式来提取它。说真的,既然已经存在这么多JSON解析器,为什么还要尝试编写JSON解析器呢?请不要为此使用正则表达式。