我已经使用 Swagger 构建了一个 C# Web API。它在此链接上启动并运行: https: //www.vijilcomm.com/api/swagger/index.html。
当我击中它时,例如像这样:
https://www.vijilcomm.com/api/VijilconOn?SerialNumber=12345&IPAddress=99.41.190.178
我收到的回复带有方括号。
[
{
"serialNumber": "12345",
"ipAddress": "99.41.190.178",
"heartbeatWait": 0,
"alertSoundTime": 0,
"fullBatteryLevel": 0,
"middleBatteryLevel": 0,
"lowBatteryLevel": 0,
"criticalBatteryLevel": 0,
"tooHardMovement": 0,
"unitID": "",
"reportPhone": "",
"action": "Device not found"
}
]
我知道 JSON 中的方括号表示数组。它看起来像是将其输出为数组或类似的东西。
这是带有方括号的响应的有效 JSON 吗,或者我的代码有问题?
我的控制器有以下代码:
[HttpGet(Name = "VijilconOn")]
public IEnumerable<VijilconOn> Get(string SerialNumber, string IPAddress)
{
return Enumerable.Range(1, 1).Select(index => new VijilconOn
{
HeartbeatWait = (Functions.ReturnIntFieldValue("HeartbeatWait", "Devices", "[SerialNumber]='" + SerialNumber + "'")),
AlertSoundTime = (Functions.ReturnIntFieldValue("AlertSoundTime", "Devices", "[SerialNumber]='" + SerialNumber + "'")),
FullBatteryLevel = (Functions.ReturnIntFieldValue("FullBatteryLevel", "Devices", "[SerialNumber]='" + SerialNumber + "'")),
MiddleBatteryLevel = (Functions.ReturnIntFieldValue("MiddleBatteryLevel", "Devices", "[SerialNumber]='" + SerialNumber + "'")),
LowBatteryLevel = (Functions.ReturnIntFieldValue("LowBatteryLevel", "Devices", "[SerialNumber]='" + SerialNumber + "'")),
CriticalBatteryLevel = (Functions.ReturnIntFieldValue("CriticalBatteryLevel", "Devices", "[SerialNumber]='" + SerialNumber + "'")),
TooHardMovement = (Functions.ReturnIntFieldValue("TooHardMovement", "Devices", "[SerialNumber]='" + SerialNumber + "'")),
UnitID = Functions.ReturnFieldValue("FriendlyName", "Devices", "[SerialNumber]='" + SerialNumber + "'").ToString(),
ReportPhone = Functions.ReturnFieldValue("ReportPhone", "Devices", "[SerialNumber]='" + SerialNumber + "'").ToString(),
IPAddress = Functions.RecordIPAddress(SerialNumber,IPAddress).ToString(),
Action = Functions.CheckIn(SerialNumber, "ON").ToString(),
SerialNumber = SerialNumber
})
.ToArray();
}
在我看来,将其输出为数组是合理的。我的问题是 - 我在这里做错了什么吗,或者 JSON 以这种方式输出是否合适?
谢谢你的帮助!这是我的第一个 REST JSON Web API,所以我不确定我是否走在正确的轨道上,或者是否有问题。谢谢!
我尝试使用上面的代码和 swagger,JSON 的输出与描述一致。我不确定是否必须更改控制器函数的行为方式,或者是否可以保持原样...
如果您希望将响应作为数组,则您的代码看起来不错。
但是如果你想返回单个对象,你不必使用
IEnumerable
。你可以创建一个对象并返回它,而不是创建Enumerable.Range(1,1)
。