【发布时间】:2014-12-03 21:13:44
【问题描述】:
对不起各位。我对编写代码很陌生...
我正在用 c# 编写一个 powershell cmdlet,它会访问 API 并获取 JSON 作为响应。
根据我对 API 的调用,返回一个 JSON 数组或单个 JSON 对象
有时候,可以
{"result": [
{
"id": "24095",
"hostid": "24094",
"name": "host1.fqdn.com",
"clustered": "false",
"type": "VM",
"ipaddress" : "192.168.1.184"
},
{
"id": "24097",
"hostid": "24096",
"name": "host2.fqdn.com",
"clustered": "true",
"type": "VM",
"ipaddress" : "192.168.1.185"
}
]
}
有时可以
{"result": {
"id": "24095",
"hostid": "24094",
"name": "host1.fqdn.com",
"clustered": "false",
"type": "VM",
"ipaddress" : "192.168.1.184"
}
}
我试图弄清楚如何使用 JSON.NET,我可以弄清楚返回的 json 是否有一个用于“结果”的对象或一个用于“结果”的数组。
根据检查,我想调用一个方法,以 CSV 格式打印出对象或数组
我希望编写一个通用方法,将所有键打印为 CSV 标头,将值打印为 CSV 的行。
但我遇到的第一件事是弄清楚我的 JSON 对象是有一个数组还是只有一个对象
我试过了
JObject jsonres = JObject.Parse(strResponse);
JObject appobj = (JObject)jsonres.SelectToken("result");
Console.WriteLine(appobj.Type.ToString());
结果
无法将类型为“Newtonsoft.Json.Linq.JArray”的对象转换为类型 'Newtonsoft.Json.Linq.JObject'。
当 appobj["result"] 是一个数组并且工作正常并且当 appobj["result"] 是单个对象时打印 "Object"。
【问题讨论】: