gpt4 book ai didi

c# - 如何在 ASP.NET Web api 中接收 json?

转载 作者:行者123 更新时间:2023-12-01 16:56:35 33 4
gpt4 key购买 nike

我有一家外部公司将数据推送到我们的一台服务器,他们将发送 JSON 数据。我需要创建一个 POST api 来接收它。这是我到目前为止所拥有的

[System.Web.Http.HttpPost]
[System.Web.Http.ActionName("sensor")]
public void PushSensorData(String json)
{
string lines = null;
try
{
System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt");
file.WriteLine(json);
file.Close();
//JSONUtilities.deserialize(json);
}
catch (Exception ex)
{
MobileUtilities.DoLog(ex.StackTrace);
}
}

我正在通过使用 fiddler 发送 json 数据来测试它,但 json 为空。这是来自 fiddler 的原始数据。

POST http://localhost:31329/mobileapi/pushsensordata/ HTTP/1.1
User-Agent: Fiddler
Host: localhost:31329
Content-Type: application/json
Content-Length: 533

{
"id": {
"server": "0.test-server.mobi",
"application": "test-server.mobi",
"message": "00007-000e-4a00b-82000-0000000",
"asset": "asset-0000",
"device": "device-0000"
},
"target": {
"application": "com.mobi"
},
"type": "STATUS",
"timestamp": {
"asset": 0000000
"device": 00000000,
"gateway": 000000,
"axon_received_at": 00000,
"wits_processed_at": 000000
},
"data_format": "asset",
"data": "asset unavailable"
}

最佳答案

在 Web API 中,您可以让框架为您完成大部分繁琐的序列化工作。首先将您的方法修改为:

[HttpPost]
public void PushSensorData(SensorData data)
{
// data and its properties should be populated, ready for processing
// its unnecessary to deserialize the string yourself.
// assuming data isn't null, you can access the data by dereferencing properties:
Debug.WriteLine(data.Type);
Debug.WriteLine(data.Id);
}

创建一个类。让您开始:

public class SensorData 
{
public SensorDataId Id { get; set; }
public string Type { get;set; }
}

public class SensorDataId
{
public string Server { get; set; }
}

此类的属性需要反射(reflect) JSON 的结构。我让您完成向模型添加属性和其他类的工作,但正如所写,该模型应该可以工作。与您的模型不对应的 JSON 值应该被丢弃。

现在,当您调用 Web API 方法时,您的传感器数据将已被反序列化。

有关详细信息,请参阅http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

关于c# - 如何在 ASP.NET Web api 中接收 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34049521/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com