c# - 如何通过 Foreach/LINQ 遍历 JObject 属性
问题描述
我有一个已建立的 JObject 对象。尝试遍历它以获取基于另一个键/值的键/值(下面的 json 示例,代码当前卡在上面)
更多细节 - 寻找循环“值”,获取基于“MailState”的“KeyID”
绝对觉得我显然错过了通过 MailState/ColName 过滤的步骤 - 我已经搜索了一堆线程,但如果有人知道一个回答了这个我无法找到的人,我会很乐意把它拉下来/参考它
// JSON DATA
{
"odata.metadata": "https://..com/odata/$metadata#JCJMCDXes",
"value": [
{
"KeyID": "10379",
"MailCity": "Chicago",
"MailState": "IL"
},
{
"KeyID": "9846",
"MailCity": "Chicago",
"MailState": "IL"
},
{
"KeyID": "2234",
"MailCity": "Madison",
"MailState": "WI"
}]
}
// Current code example
// class in play
public class datastorage
{
public string ID { get; set; }
public string Col { get; set; }
}
public class listData
{
public string ColName {get;set;}
}
// getVPData is a string response from a call to an API
getVPData.Replace(System.Environment.NewLine, "");
JObject jobj = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(getVPData);
List<datastorage> data = new List<datastorage>();
// Loop
foreach(var r in listData) // has distinct State abeviations so only 1 occurence
{
foreach (var j in jobj) // This the right path?
{
//add KeyID into ID
data.add(new datastorage
{
ID = ,//add KeyID into ID
Col = r.ColName
});
}
}
解决方案
您可以使用Newtonsoft.Json
库来解析和循环到项目value
这是一个示例代码:
dynamic json = JsonConvert.DeserializeObject(getVPData);
foreach (dynamic item in json["value"])
{
//you can access the fields inside value.
var KeyID = item["KeyID"];
var MailCity = item["MailCity"];
var MailState = item["MailState"];
//just for showing...
Console.WriteLine("KeyID:{0}, MailCity:{1}, MailState:{2}", KeyID, MailCity, MailState);
}
让我知道该片段是否有效。
推荐阅读
- sql - 基于 OVER PARTITION BY 子句的 SQL 计算列
- java - InterruptedException、API 设计和泄漏抽象
- spring-boot - layout.js - PrimeFaces.widget.Avalon 未调用
- search - 需要递归循环退出语句
- android - Android:我的 Activity 重启后如何恢复 WebView 内容?
- iphone - 如何使用蓝牙测量两个 iphone 设备之间的近距离?
- android - 根据字体大小对所有 TextView 使用 paddingBottom
- spatstat - spatstat 中网络上的等级分离和最短路径
- c# - 在 .Net Core 3.1 上运行时,托管 IBM MQ .Net Client v9.1.4 在通过 SSL 获取时冻结
- python - 在节点 js 中调用 python 脚本 => ERR_HTTP_HEADERS_SENT