【发布时间】:2018-06-26 20:28:09
【问题描述】:
我在一个扩展名为 .json 的文件中有一个 JSON 数据。我从文件中抓取并读取 JSON。我的问题是如何检查payment 数组是否有子元素。
我尝试过o2["payment"].length(),但它给了我一个错误
'JToken' 不包含'length' 的定义,也没有扩展名 接受“JToken”类型的第一个参数的方法“长度”可以是 找到(您是否缺少 using 指令或程序集引用?)
我正在使用Json.NET
{
"bank_name": "MyBank",
"payment": [
{
"ssn": "123456789",
"description": "Payment for income tax for 2015",
"amount": "55.00"
},
{
"ssn": "123456789",
"description": "Payment for income tax for 2016",
"amount": "95.10"
},
{
"ssn": "123456789",
"description": "Payment for income tax for 2017",
"amount": "35.03"
}
]
}
public ActionResult ReadFile()
{
var Path = "C:\\Payment";
var PendingPath = Path + "\\Pending";
string[] FilePaths = Directory.GetFiles(@PendingPath, "*.json");
foreach ( var CurrentFile in FilePaths )
{
using (StreamReader file = System.IO.File.OpenText(CurrentFile))
using (JsonTextReader reader = new JsonTextReader(file))
{
JObject o2 = (JObject)JToken.ReadFrom(reader);
var bank_name = o2["bank_name"];
if ( o2["payment"].length() ) //Check here if payment has any children
{
}
}
}
return new EmptyResult();
}
【问题讨论】:
-
将
o2["payment"]转换为 JArray -
@Sxntk 我尝试像
(JArray) o2["payment"]一样投射。我收到一个错误“无法将类型“Newtonsoft.Json.Linq.JArray”隐式转换为“bool”。存在显式转换(您是否缺少演员表? -
条件应该是((JArray)o2["payment"]).Count > 0
-
@Sxntk 很好用。请将其添加为答案。