【问题标题】:How do you return a value from a json file with unkown objects?如何从包含未知对象的 json 文件中返回值?
【发布时间】:2021-05-04 00:44:15
【问题描述】:

我正在尝试使用字符串搜索 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 文件设置为字符串,但我不确定在这种情况下如何创建要搜索的对象。

【问题讨论】:

    标签: c# json


    【解决方案1】:

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

    [
      [
         "xyz"
         ...
      ],
      [
      ]
    ]
    

    一旦你的对象是有效的,你可以在你的代码中使用 JSON.Net 库来解析它

    // Here you'll have your value
    string json = @"[
      'Small',
      'Medium',
      'Large'
    ]";
    
    JArray a = JArray.Parse(json);
    

    你可以看到How to access elements of a JArray (or iterate over them)如何迭代/访问它们。

    【讨论】:

      【解决方案2】:

      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;
       }
      

      【讨论】:

        猜你喜欢
        • 2021-05-04
        • 1970-01-01
        • 2021-02-14
        • 2020-07-16
        • 2018-06-02
        • 1970-01-01
        • 2013-10-02
        • 1970-01-01
        • 2018-06-14
        相关资源
        最近更新 更多