0

この 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ステートメントを手伝ってくれる人はいますか?

ありがとう

4

1 に答える 1

0

クラスが以下のサンプルのように見えると仮定するとJObject、次のことができます。

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

これにより、Maryland、New York、および Pennsylvania の 3 つのエントリを持つ 1 つの配列が生成されます。

完全なサンプル:

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();
    }
}
于 2013-06-29T15:48:43.510 に答える