0

у нас есть файл ( +- 850 строк) формата vdf:

"users"
{
    "76561198971110872"
    {
        "AccountName"       "string1"
        "PersonaName"       "nick"
        "RememberPassword"      "1"
        "WantsOfflineMode"      "0"
        "SkipOfflineModeWarning"        "0"
        "AllowAutoLogin"        "1"
        "MostRecent"        "1"
        "Timestamp"     "1657315226"
    }
    "76561199256632399"
    {
        "AccountName"       "string2"
        "PersonaName"       "nick"
        "RememberPassword"      "0"
        "WantsOfflineMode"      "0"
        "SkipOfflineModeWarning"        "0"
        "AllowAutoLogin"        "1"
        "MostRecent"        "0"
        "Timestamp"     "1657313715"
    }
    "76561199264398742"
    {
        "AccountName"       "string3"
        "PersonaName"       "nick"
        "RememberPassword"      "1"
        "WantsOfflineMode"      "0"
        "SkipOfflineModeWarning"        "0"
        "AllowAutoLogin"        "1"
        "MostRecent"        "0"
        "Timestamp"     "1657102771"
    }
}

Мне нужно получить это:

введите сюда описание изображения

Но, эти цифры мне не известны, мне известно только "AccountName"

Вопрос - Как получить те цифры?

Буду рад ответить на встречные вопросы )

gnomuk
  • 3
  • 1
    Если формат стандартизирован, значит для него есть готовые решения, стоит их найти, а не изобретать велосипед, например Gameloop.Vdf. – EvgeniyZ Jul 08 '22 at 22:15
  • Неплохо в целом, почему-то я когда искал не мог найти этого. Спасибо – gnomuk Jul 08 '22 at 22:20
  • Самый первый результат из NuGet по запросу Vdf, может есть и лучше, не знаю, не искал. – EvgeniyZ Jul 08 '22 at 22:26
  • Но, все равно как получить те цифры? Я не столько прошареный как большинство людей которые отвечают на вопросы. – gnomuk Jul 08 '22 at 22:28
  • Для начала, почитать документацию к библиотеке, увидите там то, что она по умолчанию основана на dynamic, что не есть хорошо, а для нормальной десериализации нужно использовать .ToJson().ToObject<SteamModel>();, ну а какой тип - это уже читайте тут. – EvgeniyZ Jul 08 '22 at 22:35

1 Answers1

0

Поставил NuGet пакет Gameloop.Vdf, скопировал ваши данные в файл, написал вот такой код:

using Gameloop.Vdf;
using Gameloop.Vdf.Linq;
static void Main(string[] args)
{
    VProperty users = VdfConvert.Deserialize(File.ReadAllText("users.vdf"));
string name = &quot;string2&quot;;
VProperty user = users.Value
    .OfType&lt;VProperty&gt;()
    .FirstOrDefault(x =&gt; x.Value[&quot;AccountName&quot;].Value&lt;string&gt;() == name);
string key = user?.Key ?? &quot;key not found&quot;;
Console.WriteLine(key);

Console.ReadKey();

}

Получил вот такой вывод в консоль

76561199256632399
aepot
  • 49,560
  • О снова вы, здравствуйте! ;D Спасибо, сейчас попробую – gnomuk Jul 08 '22 at 22:42
  • 1
    Снова вас благодарю! Большое спасибо, вы как бог только на земле. – gnomuk Jul 08 '22 at 22:45