C# ASP.net Web api中的简单类型JSON序列化
我创建了一个web api,其中包含以下方法:C# ASP.net Web api中的简单类型JSON序列化,c#,json,asp.net-web-api,C#,Json,Asp.net Web Api,我创建了一个web api,其中包含以下方法: POST Settings/SetPropertyValue?propertyName={propertyName} public object SetPropertyValue(string propertyName, object propertyValue) { switch (propertyName) { //Do the propert
POST Settings/SetPropertyValue?propertyName={propertyName}
public object SetPropertyValue(string propertyName, object propertyValue)
{
switch (propertyName)
{
//Do the property assignment
}
}
当我访问帮助页面时,它显示以下内容
当我尝试使用XML示例从fiddler调用该方法时,它运行良好,object propertyValue等于POST值
XML POST示例:
POST http://localhost:99/webapi/Settings/SetPropertyValue?propertyName=myProperty HTTP/1.1
Content-Type: text/xml; charset=UTF-8
Host: localhost:99
Expect: 100-continue
Connection: Keep-Alive
<anyType>
true
</anyType>
POSThttp://localhost:99/webapi/Settings/SetPropertyValue?propertyName=myProperty HTTP/1.1
内容类型:text/xml;字符集=UTF-8
主机:localhost:99
预期:100人继续
连接:保持活力
符合事实的
但是在这种情况下如何发布JSON呢?JSON是否处理“简单”的数据类型,如对象或字符串?据我所知,您没有发送任何正文。因此,XML和JSON主体都是空的 您可以将所有属性放置在查询字符串中 我正在读关于它的文章,似乎你必须从
Post
开始你的方法,使它成为一个HTTP Post而不是GET
引用:
请注意此方法的两个方面:
方法名称以“Post…”开头。要创建新产品
客户端发送HTTP POST请求
这是我的测试代码。也许它对你有用:
WebRequest request = HttpWebRequest.Create("http://localhost:12345/api/Values");
byte[] byteArray = Encoding.UTF8.GetBytes("5");
request.ContentLength = byteArray.Length;
request.ContentType = "application/json";
request.Method = "POST";
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
Stream data = response.GetResponseStream();
StreamReader reader = new StreamReader(data);
// Read the content.
string responseFromServer = reader.ReadToEnd();
此处涉及的控制器操作:
// POST api/values
public void Post([FromBody]string value)
{
// check the value here
}
请解释你的答案,因为我完全不明白,你是什么意思对不起,但你似乎不明白,我到底在问什么。我可以将对象发布为XML,但如何将对象发布为JSON?我上面的代码已经开始工作并接受post,但似乎我不能将简单的数据类型发布为JSON。为了将方法标记为post,我在其上方使用了[HttpPost]。您是否在请求中发送了内容类型<代码>内容类型:application/json当然可以!请告诉我,如何将简单数据类型发布为JSON?不是一个DataContract类,序列化为JSON对象,只是字符串作为示例。正如我所看到的,Web Api在序列化JSON时会这样做:如果有一个类,比如
class Person{String Name;}
并且我们正在获取或发布该类的对象,JSON对象将看起来像{Name:“John Doe”}
,但是如果我们返回简单类型,像字符串“johndoe”一样,我们将得到johndoe
作为一个响应,它不被识别为有效的JSON,但我能够从我的C#、Fiddler和Java客户端获取并发布值,所以问题基本上得到了解决。谢谢你的努力!