Eu construí uma API Web C# usando Swagger. Ela está ativa e funcionando neste link: https://www.vijilcomm.com/api/swagger/index.html .
Quando eu bato, por exemplo assim:
https://www.vijilcomm.com/api/VijilconOn?SerialNumber=12345&IPAddress=99.41.190.178
A resposta que recebo está entre colchetes.
[
{
"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"
}
]
Eu sei que em JSON colchetes indicam uma matriz. Parece que ele está gerando como uma matriz ou algo assim.
Este JSON com os colchetes ao redor da resposta é válido ou há algo errado com meu código?
Meu controlador tem este código:
[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();
}
O que parece fazer sentido para mim que esteja sendo produzido como um array. Minha pergunta é: estou fazendo algo errado aqui, ou está tudo bem que o JSON esteja sendo produzido dessa forma?
Obrigado pela ajuda! Esta é minha primeira REST JSON Web API, então não tenho certeza se estou no caminho certo aqui, ou se algo está errado. Obrigado!
Tentei usar o código acima e o swagger, e o JSON foi gerado conforme descrito. Não tenho certeza se preciso alterar como minha função de controlador está se comportando ou se posso simplesmente deixá-la como está...
Se você quiser a resposta como uma matriz, seu código parece bom.
Mas se você quiser retornar um único objeto, não precisa usar
IEnumerable
. Em vez de criarEnumerable.Range(1,1)
, você pode criar um objeto e retorná-lo.