我使用 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),你可以创建一个对象并返回它。