我正在使用JSON.NET来解析我的JSON:
JObject jsonObject = JObject.Parse(myJson);
我的JSON看起来像这样:
{
"_links": {
"self": {
"href": "https://api-uat.dwolla.com/accounts/069b759d-6267-42d6-b30b-5d03ddd25673/funding-sources",
"type": "application/vnd.dwolla.v1.hal+json",
"resource-type": "funding-source"
}
},
"_embedded": {
"funding-sources": [
{
"_links": {
"self": {
"href": "https://api-uat.dwolla.com/funding-sources/0b2f6a31-b909-4c7d-a9f8-6253e5f791d0",
"type": "application/vnd.dwolla.v1.hal+json",
"resource-type": "funding-source"
},
"account": {
"href": "https://api-uat.dwolla.com/accounts/069b759d-6267-42d6-b30b-5d03ddd25673",
"type": "application/vnd.dwolla.v1.hal+json",
"resource-type": "account"
},
"balance": {
"href": "https://api-uat.dwolla.com/funding-sources/0b2f6a31-b909-4c7d-a9f8-6253e5f791d0/balance",
"type": "application/vnd.dwolla.v1.hal+json",
"resource-type": "balance"
}
},
"id": "0b2f6a31-b909-4c7d-a9f8-6253e5f791d0",
"status": "verified",
"type": "bank",
"name": "Bank Of America",
"created": "2017-03-22T12:54:51.000Z",
"removed": false,
"channels": [
"ach"
],
"bankName": "SANDBOX TEST BANK"
},
{
"_links": {
"self": {
"href": "https://api-uat.dwolla.com/funding-sources/2235c3f5-03d6-4b7c-8ffb-c389c94375eb",
"type": "application/vnd.dwolla.v1.hal+json",
"resource-type": "funding-source"
},
"account": {
"href": "https://api-uat.dwolla.com/accounts/069b759d-6267-42d6-b30b-5d03ddd25673",
"type": "application/vnd.dwolla.v1.hal+json",
"resource-type": "account"
}
},
"id": "2235c3f5-03d6-4b7c-8ffb-c389c94375eb",
"status": "verified",
"type": "bank",
"name": "Superhero Savings Bank",
"created": "2017-03-17T06:39:28.000Z",
"removed": true,
"channels": [
"ach"
],
"bankName": "SANDBOX TEST BANK"
}
]
}
}
在这里,我可以拥有N个资金来源。对于每个资金来源,我希望href
self
移除false
href:"https://api-uat.dwolla.com/funding-sources/0b2f6a31-b909-4c7d-a9f8-6253e5f791d0"
。所以在上面的例子中我需要:
JObject
。
我尝试通过循环遍历foreach (var x in jsonObject)
{
if(x.Key == "_embedded")
{
foreach (var fundingSources in x.Value["funding-sources"])
{
foreach (var y in fundingSources)
{
}
}
}
}
:
select
TPS.HET,
TPS.UOW AS UOW
from controls
inner join TPS on
ctrls.Priority_Score=TPS.score
inner join TPS AS UOW on
ctrls.Priority_Score=TPS.score
select
case when HET = '1' then 'Yes' else 'No' end as HET,
case when UOW = '3' then 'Yes' else 'No' end as UOW from TPS
不幸的是,我无法将资金来源纳入阵列。
答案 0 :(得分:2)
试试这样:
JObject jsonObject = JObject.Parse(myJson);
foreach (JToken fundingSource in jsonObject.SelectToken("_embedded.funding-sources"))
{
bool removed = (bool)fundingSource["removed"];
if (!removed)
{
string href = (string)fundingSource.SelectToken("_links.self.href");
Console.WriteLine(href);
}
}
小提琴:https://dotnetfiddle.net/Jhw8w6
或者你可以像这样使用LINQ:
JObject jsonObject = JObject.Parse(myJson);
List<string> links = jsonObject.SelectToken("_embedded.funding-sources")
.Where(fundingSource => !(bool)fundingSource["removed"])
.Select(fundingSource => (string)fundingSource.SelectToken("_links.self.href"))
.ToList();
Console.WriteLine(string.Join(Environment.NewLine, links));
答案 1 :(得分:1)
试试这段代码:
JObject jsonObject = JObject.Parse ( myJson );
foreach ( var x in jsonObject )
{
if ( x.Key == "_embedded" )
{
foreach ( var source in x.Value [ "funding-sources" ] )
{
var removedAttribute = source [ "removed" ];
if ( removedAttribute != null && bool.Parse ( removedAttribute.ToString () ) == false )
{
var links = source [ "_links" ];
var self = links [ "self" ];
var href = self [ "href" ];
}
}
}
}