C# 如何从包含未知对象的json文件返回值?

C# 如何从包含未知对象的json文件返回值?,c#,json,C#,Json,我试图用一个字符串搜索一个json文件,然后从与该字符串相同的对象返回一个值。这是json文件的一部分: [ "7c6b2f", "EYZ", "Australia", 1611990353, 1611990419, 144.8364, -37.6611, 13114.02, false, 50.42,

我试图用一个字符串搜索一个json文件,然后从与该字符串相同的对象返回一个值。这是json文件的一部分:

    [
      "7c6b2f",
      "EYZ",
      "Australia",
      1611990353,
      1611990419,
      144.8364,
      -37.6611,
      13114.02,
      false,
      50.42,
      171.56,
      null,
      null,
      null,
      "5064",
      true,
      0
    ],
    [
      "7c6b0c",
      "JST",
      "New-Zealand",
      1611990440,
      1611990440,
      148.4636,
      -33.7973,
      10668,
      false,
      248.2,
      37.84,
      -0.33,
      null,
      11170.92,
      "1461",
      false,
      0
    ] 

我希望这样,如果用户输入EYZ,代码将返回Australia。我目前正在将json文件设置为字符串,但我不确定在这种情况下如何创建要搜索的对象。

首先,这不是一个有效的json文件。您需要将其包含在数组元素中:

[
  [
     "xyz"
     ...
  ],
  [
  ]
]
一旦对象有效,就可以使用JSON.Net库在代码中对其进行解析

// Here you'll have your value
string json = @"[
  'Small',
  'Medium',
  'Large'
]";

JArray a = JArray.Parse(json);
您可以看到如何迭代/访问它们。

JSON.Net

    public static string Search(string input)
    {
        using (var sr = new StreamReader("your.json"))
        {
            var reader = new JsonTextReader(sr);
            while (reader.Read())
            {
                if (reader.TokenType==JsonToken.String)
                {
                    var value = reader.ReadAsString();
                    if (value == input)
                    {
                        return reader.ReadAsString();
                    }
                }
            }
        }
        return null;
     }
SystemExtensions.Core

public static string Search(string input)
{
    using (var sr = new StreamReader("your.json"))
    {
        var reader = JsonReader.CreateJson5(sr, 2048);
        while (reader.Read())
        {
            if (reader.IsString)
            {
                var value = reader.GetString();
                if (value == input)
                {
                    if (reader.Read() && reader.IsString)
                    {
                        return reader.GetString();
                    }
                }
            }
        }
    }
    return null;
 }