我已经获得了这个JSON(下方),我在选择一个字符串列表时遇到了麻烦,该列表将是" MARYLAND"," NEW YORK",& #34;宾夕法尼亚州"
{
"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语句从中获取状态字符串吗?
由于
答案 0 :(得分:0)
假设您的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();
}
}