使用Linq从Json中获取字符串列表



我得到了这个JSON(下面),我在选择一个字符串列表时遇到了问题,该列表将是"MARYLAND"、"NEW YORK"、"PENNSYLVANIA"。

    {
  "displayFieldName": "NAME",
  "fieldAliases": {
    "STATE": "STATE"
  },
  "fields": [
    {
      "name": "STATE",
      "type": "esriFieldTypeString",
      "alias": "STATE",
      "length": 20
    }
  ],
  "features": [
    {
      "attributes": {
        "STATE": "Maryland"
      }
    },
    {
      "attributes": {
        "STATE": "New York"
      }
    },
    {
      "attributes": {
        "STATE": "Pennsylvania"
      }
    }
  ]
}

到目前为止,我正在获取json字符串并将其反序列化为JObject,我可以看到子对象。不过,我很难更深入地了解它,它与我看到的其他示例不符,因为"特性"是"属性"的集合。我在写linq以进入下一个层次时遇到了困难。

这是我的代码:

            var foo = response.Content.ReadAsStringAsync().Result;
            var json = (JObject)JsonConvert.DeserializeObject(foo);
            var cf = json["features"].Children();

有人能帮我用linq语句从中获取字符串状态吗?

感谢

假设您的JObject类看起来像下面的示例,您可以执行以下操作:

string[] states = json.features.SelectMany(f => f.attributes).ToArray();

这就产生了一个包含马里兰州、纽约州和宾夕法尼亚州三个条目的单个数组。

全样本:

class JObject
{
    public Feature[] Features { get; set; }
}
class Feature
{
    public string[] Attributes { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        Feature f1 = new Feature { Attributes = new[] { "Maryland" } };
        Feature f2 = new Feature { Attributes = new[] { "New York" } };
        Feature f3 = new Feature { Attributes = new[] { "Pennsylvania" } };
        JObject state = new JObject
        {
            Features = new[] { f1, f2, f3 }
        };
        string[] states = state.Features.SelectMany(f => f.Attributes).ToArray();
    }
}

相关内容

  • 没有找到相关文章

最新更新