Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.net Web api中的简单类型JSON序列化_C#_Json_Asp.net Web Api - Fatal编程技术网

C# ASP.net Web api中的简单类型JSON序列化

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

我创建了一个web api,其中包含以下方法:

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客户端获取并发布值,所以问题基本上得到了解决。谢谢你的努力!