我得到了这个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();
}
}