gpt4 book ai didi

c# - Web API 一次操作中的复杂和原始参数

转载 作者:太空宇宙 更新时间:2023-11-03 10:56:44 24 4
gpt4 key购买 nike

我有一个 ASP.NET Web API 操作:

[HttpPost]
public void test(myCustomObj Entity)
{

}

JSON 数据是:

{
"ID": "1",
"Name": "ilhan",
"surname": "aksu"
}

到目前为止,我的代码运行良好。但是,当我添加一个新的原始参数时:

[HttpPost]
public void test(myCustomObj Entity, [FromBody] string strdata)
{

}

当我发布以下 JSON 时:

{
"Entity": {
"ID": "1",
"Name": "ilhan",
"surname": "aksu"
},
"strdata": "testdata"
}

服务器返回500 Internal Server Error

如何格式化我的 JSON 数据或更改我的操作方法来解决此问题?

最佳答案

如果您要发布 json,您可以接受一个 string 参数:

[HttpPost]
public void Test(string jsonString)
{

}

也许还有一个序列化程序帮助器来避免污染代码:

public static class JsonSerializer
{
public static string Serialize<T>(T t) where T : class
{
return JsonConvert.SerializeObject(t);
}

public static T Deserialize<T>(string s) where T : class
{
return (T)JsonConvert.DeserializeObject(s, typeof(T));
}
}

然后在您的方法中您可以具体化 json 负载:

[HttpPost]
public void Test(string jsonString)
{
var o = JsonSerializer.DeserializeObject(jsonString, typeof(MyObject));

// ...
}

如果你要返回 json,它可能如下所示:

[HttpGet]
public JsonResult GetTest()
{
var i = YourService.GetSomethingById(1);

iSerialized = JsonSerializer.Serialize(i);

return new JsonResult
{
ContentEncoding = System.Text.Encoding.UTF8,
ContentType = "application/json",
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
Data = iSerialized
};
}

关于c# - Web API 一次操作中的复杂和原始参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19233832/

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