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# 如何检测来自服务器的响应json字符串的形式,以及如何解析和使用它?_C#_Json_Json.net - Fatal编程技术网

C# 如何检测来自服务器的响应json字符串的形式,以及如何解析和使用它?

C# 如何检测来自服务器的响应json字符串的形式,以及如何解析和使用它?,c#,json,json.net,C#,Json,Json.net,我有一个c程序,它向服务器发送一些请求,并以json格式接收一些响应字符串 服务器以以下json形式之一发送响应: 此方法在收到服务器的响应后执行: struct param { public String url, postjson; public Object res; } void sendtoserverCallback(object sender, EventArgs e) { RunWorkerCompletedEventArgs e2 = (RunWorke

我有一个c程序,它向服务器发送一些请求,并以json格式接收一些响应字符串

服务器以以下json形式之一发送响应:

此方法在收到服务器的响应后执行:

struct param
{
   public String url, postjson;
   public Object res;
}

void sendtoserverCallback(object sender, EventArgs e)
{
    RunWorkerCompletedEventArgs e2 = (RunWorkerCompletedEventArgs)e;
    param response = (param)e2.Result;

    Object res = JsonConvert.DeserializeObject(response.res.ToStrin  g());
}
response json位于response.res中

我使用.NETFramework 3.5和JSON.net进行解析

现在我如何检测json格式是res,以及如何使用它

格式1中的响应json示例:

{needUserChoose:[{类型:视频/mp4,url:http://youtube.com/?id=55,尺码:[1578978020,1.47 GB],视频id:TmE\U HSoDIUY,名称:国家末日-TotalBizzie 与史诗般的用餐时间-所有4场比赛+RL 采访,id:55},{type:video/webm,url:http://youtube.com/?id=56,尺码:[442230006421.74 MB],视频id:TmE_HSoDIUY,名称:国家末日-TotalBizzie 与史诗般的用餐时间-所有4场比赛+RL 采访,id:56},{type:video/mp4,url:http://youtube.com/?id=57,尺码:[383706129365.93 MB],视频id:TmE_HSoDIUY,名称:国家末日-TotalBizzie 与史诗般的用餐时间-所有4场比赛+RL 采访,id:57},{type:video/x-flv,url:http://youtube.com/?id=58,大小:[191339943182.48 MB],视频识别码:TmE_HSoDIUY,名称:国家末日-Totalbiscuit 与史诗般的用餐时间-所有4场比赛+RL 采访,id:58},{类型:视频/3gpp,url:http://youtube.com/?id=59,尺码:[126227794120.38 MB],视频id:TmE_HSoDIUY,名称:国家末日-TotalBizzie 与史诗般的用餐时间-所有4场比赛+RL 采访,id:59},{类型:视频/3gpp,url:http://youtube.com/?id=60,尺码:[44943692,42.86 MB],视频id:TmE_HSoDIUY,名称:国家末日-TotalBizzie 与史诗般的用餐时间-所有4场比赛+RL 采访,id:60}],域名:youtube.com}

格式2中的响应json示例:

{收到:true,大小:[44943692,42.86 MB],名称:国家末 -Total饼干vs.史诗般的用餐时间-所有4场比赛+RL采访。3gp,url:https://r16--sn-4g57kn6s.googlevideo.com/videoplayback?key=yt5&ip=2a01%3A4f8%3A192%3A43e1%3A%3A2&fexp=906956%2C945005%2C929209%2C931014%2C945807%2C913434%2C923341&upn=YA5ES2SkUTs&uinitcwndbps=403000&itag=17&requiressl=yes&mt=1400781466&mws=yes&mv=m&id=o-Adwpucaqakijiu0_EJArWgPb8yJcrPSiOy8jm9uJC&ms=au&signature=2d17757b591677ad55fe64515eedc0469d390.5d52b0a9a14a76775b3af091f21cc21a664263b&source=youtube&sparams=id%2Cip%2Cipbits%2Citag%2Crequiressl%2Cuinitcwndbps%2Cupn%2Cexpire&expire=140080173&sver=3&ipbits=0,文件:http://www.dlbazi.com/multidl/downloads/End_of_Nations_-_Totalbiscuit_vs._Epic_Meal_Time_-_所有匹配的采访。3gp}

编辑:我有两个问题

1-我们假设响应字符串的形式为1。现在我必须首先声明一个结构,然后将响应字符串转换为它吗

struct form1
{
    public String domain;
    public a[] needUserChoose;
}

struct a
{
    public int id;
    public String name, type, url, video_id;
    public String[] size;
}

void sendtoserverCallback(object sender, EventArgs e)
{
    RunWorkerCompletedEventArgs e2 = (RunWorkerCompletedEventArgs)e;
    param response = (param)e2.Result;

    form1 res = (form1)JsonConvert.DeserializeObject(response.res.ToString());
}
但是这抛出了一个无效的CastException例外


2-如何检测服务器响应json字符串的json格式

我建议您添加表单id作为一个键,这样至少您可以知道对它的响应form@Dibu请给我一个代码示例!!好的,首先告诉我您是否编写了发送响应的服务器端api?好的,然后当您向服务器发送请求时,在查询字符串或标题中添加表单id,然后在响应中附加表单id没有其他方法吗??因为更改服务器端代码非常困难。我编辑了我的问题。请再读一遍,给我一个问题1的答案