Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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# 从fiddler发布json会将空值留给ApicController_C#_Json_Asp.net Web Api_Fiddler - Fatal编程技术网

C# 从fiddler发布json会将空值留给ApicController

C# 从fiddler发布json会将空值留给ApicController,c#,json,asp.net-web-api,fiddler,C#,Json,Asp.net Web Api,Fiddler,我试图通过fiddler发布一些json数据,这是我在标题中的内容: User-Agent: Fiddler Content-Type: application/json; charset=utf-8 Host: localhost Content-Length: 1176 正文: 我的网址是: http://localhost/api/jason c#控制器web api操作: // POST api/default1 public void Post([FromBody]string v

我试图通过fiddler发布一些json数据,这是我在标题中的内容:

User-Agent: Fiddler
Content-Type: application/json; charset=utf-8
Host: localhost
Content-Length: 1176
正文:

我的网址是:

http://localhost/api/jason
c#控制器web api操作:

// POST api/default1
public void Post([FromBody]string value)
{
    parseJson(value);

}

private void parseJson(object json)
{
    if (json!=null)
    {
        var list = JsonConvert.DeserializeObject<List<MyItem>>(json.ToString());
    }
}
//POST-api/default1
公共作废帖子([FromBody]字符串值)
{
parseJson(值);
}
私有void parseJson(对象json)
{
if(json!=null)
{
var list=JsonConvert.DeserializeObject(json.ToString());
}
}

当我执行I时,该值为空,我得到一个204 httpcode。我如何从fiddler调用它,以便它在value变量中返回一个jsonvalue?

下面是如何让它工作的

将所有“在JSON中”替换为\。然后从请求正文中删除
value=
。把所有东西都包在里面。你的请求主体应该是这样的

"[
  {
    \"id\": \"5241585099662481339\",
    \"displayName\": \"Music\",
    \"name\": \"music\",
    \"slug\": \"music\",
    \"imageUrl\": \"http://kcdn3.klout.com/static/images/music-1333561300502.png\"
  },
  {
    \"id\": \"6953585193220490118\",
    \"displayName\": \"Celebrities\",
    \"name\": \"celebrities\",
    \"slug\": \"celebrities\",
    \"imageUrl\": \"http://kcdn3.klout.com/static/images/topics/celebrities_b32741b6703151cc7bd85fba24c44c52.png\"
  },
  {
    \"id\": \"5757029936226020304\",
    \"displayName\": \"Entertainment\",
    \"name\": \"entertainment\",
    \"slug\": \"entertainment\",
    \"imageUrl\": \"http://kcdn3.klout.com/static/images/topics/Entertainment_7002e5d2316e85a2ff004fafa017ff44.png\"
  },
  {
    \"id\": \"3718\",
    \"displayName\": \"Saturday Night Live\",
    \"name\": \"saturday night live\",
    \"slug\": \"saturday-night-live\",
    \"imageUrl\": \"http://kcdn3.klout.com/static/images/icons/generic-topic.png\"
  },
  {
    \"id\": \"8113008320053776960\",
    \"displayName\": \"Hollywood\",
    \"name\": \"hollywood\",
    \"slug\": \"hollywood\",
    \"imageUrl\": \"http://kcdn3.klout.com/static/images/topics/hollywood_9eccd1f7f83f067cb9aa2b491cd461f3.png\"
  }
]"
public async Task Post(HttpRequestMessage request)
{
    string requestContent = await request.Content.ReadAsStringAsync();
    // use requestContent variable here
}
这应该是可行的,但听起来很可怕,因为这不是WebAPI应该如何使用的。您应该让web API为您进行绑定,而不是手动进行绑定。如果您将操作方法签名更改为
public void Post(MyItem[]value)
,那么您可以发布JSON(不带value=),它将立即为您提供
MyItem
的列表。您不需要使用JSON.NET并自己解析JSON

更新

如果您想保持JSON的原样,有几个选项

(1) 将其绑定到类(复杂类型)

(2) 如果要将JSON作为字符串读取,请执行以下操作

"[
  {
    \"id\": \"5241585099662481339\",
    \"displayName\": \"Music\",
    \"name\": \"music\",
    \"slug\": \"music\",
    \"imageUrl\": \"http://kcdn3.klout.com/static/images/music-1333561300502.png\"
  },
  {
    \"id\": \"6953585193220490118\",
    \"displayName\": \"Celebrities\",
    \"name\": \"celebrities\",
    \"slug\": \"celebrities\",
    \"imageUrl\": \"http://kcdn3.klout.com/static/images/topics/celebrities_b32741b6703151cc7bd85fba24c44c52.png\"
  },
  {
    \"id\": \"5757029936226020304\",
    \"displayName\": \"Entertainment\",
    \"name\": \"entertainment\",
    \"slug\": \"entertainment\",
    \"imageUrl\": \"http://kcdn3.klout.com/static/images/topics/Entertainment_7002e5d2316e85a2ff004fafa017ff44.png\"
  },
  {
    \"id\": \"3718\",
    \"displayName\": \"Saturday Night Live\",
    \"name\": \"saturday night live\",
    \"slug\": \"saturday-night-live\",
    \"imageUrl\": \"http://kcdn3.klout.com/static/images/icons/generic-topic.png\"
  },
  {
    \"id\": \"8113008320053776960\",
    \"displayName\": \"Hollywood\",
    \"name\": \"hollywood\",
    \"slug\": \"hollywood\",
    \"imageUrl\": \"http://kcdn3.klout.com/static/images/topics/hollywood_9eccd1f7f83f067cb9aa2b491cd461f3.png\"
  }
]"
public async Task Post(HttpRequestMessage request)
{
    string requestContent = await request.Content.ReadAsStringAsync();
    // use requestContent variable here
}

您是否寻找重复的问题,例如,您不需要在正文开头使用
value=
。我需要保持json格式不变(我更新了它,请参见上文)