Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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格式的Web Api_C#_Asp.net_.net_Asp.net Web Api - Fatal编程技术网

C# 返回不需要的json格式的Web Api

C# 返回不需要的json格式的Web Api,c#,asp.net,.net,asp.net-web-api,C#,Asp.net,.net,Asp.net Web Api,方法: [Route("api/vms/getpowerstatus/{vmsid}")] [HttpGet] public string getpowerstatus(string vmsid) { Result rs = new Result(); try { DataSet ds = new DataSet(); String timeStamp = GetTimestamp(); string q = "sele

方法:

[Route("api/vms/getpowerstatus/{vmsid}")]
[HttpGet]
public string getpowerstatus(string vmsid)
{ 
    Result rs = new Result();
    try
    {
        DataSet ds = new DataSet();
        String timeStamp = GetTimestamp();

        string q = "select vmsid, vmspowerstatus ,vmspowerdatetime from public.vmssnapshot  ";
        ds = vm.GetVMS(q);
        rs.vmsid = vmsid;
        rs.status = "success";

        string json = JsonConvert.SerializeObject( ds.Tables[0] , Formatting.None);
        return json;
    }
    catch (Exception ex)
    {

    } 
}
"[{\"vmsid\":\"512\",\"vmspowerstatus\":null,\"vmspowerdatetime\":null},{\"vmsid\":\"VMSBhandup98\",\"vmspowerstatus\":null,\"vmspowerdatetime\":null},{\"vmsid\":\"tquwuer\",\"vmspowerstatus\":null,\"vmspowerdatetime\":null},{\"vmsid\":\"VMSBlock\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1539022768},{\"vmsid\":\"uu4443\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1534917021},{\"vmsid\":\"cms_bhandup\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1539022544},{\"vmsid\":\"vmsBolakk\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1539631400}]"
响应:

[Route("api/vms/getpowerstatus/{vmsid}")]
[HttpGet]
public string getpowerstatus(string vmsid)
{ 
    Result rs = new Result();
    try
    {
        DataSet ds = new DataSet();
        String timeStamp = GetTimestamp();

        string q = "select vmsid, vmspowerstatus ,vmspowerdatetime from public.vmssnapshot  ";
        ds = vm.GetVMS(q);
        rs.vmsid = vmsid;
        rs.status = "success";

        string json = JsonConvert.SerializeObject( ds.Tables[0] , Formatting.None);
        return json;
    }
    catch (Exception ex)
    {

    } 
}
"[{\"vmsid\":\"512\",\"vmspowerstatus\":null,\"vmspowerdatetime\":null},{\"vmsid\":\"VMSBhandup98\",\"vmspowerstatus\":null,\"vmspowerdatetime\":null},{\"vmsid\":\"tquwuer\",\"vmspowerstatus\":null,\"vmspowerdatetime\":null},{\"vmsid\":\"VMSBlock\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1539022768},{\"vmsid\":\"uu4443\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1534917021},{\"vmsid\":\"cms_bhandup\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1539022544},{\"vmsid\":\"vmsBolakk\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1539631400}]"
期望的响应:

[Route("api/vms/getpowerstatus/{vmsid}")]
[HttpGet]
public string getpowerstatus(string vmsid)
{ 
    Result rs = new Result();
    try
    {
        DataSet ds = new DataSet();
        String timeStamp = GetTimestamp();

        string q = "select vmsid, vmspowerstatus ,vmspowerdatetime from public.vmssnapshot  ";
        ds = vm.GetVMS(q);
        rs.vmsid = vmsid;
        rs.status = "success";

        string json = JsonConvert.SerializeObject( ds.Tables[0] , Formatting.None);
        return json;
    }
    catch (Exception ex)
    {

    } 
}
"[{\"vmsid\":\"512\",\"vmspowerstatus\":null,\"vmspowerdatetime\":null},{\"vmsid\":\"VMSBhandup98\",\"vmspowerstatus\":null,\"vmspowerdatetime\":null},{\"vmsid\":\"tquwuer\",\"vmspowerstatus\":null,\"vmspowerdatetime\":null},{\"vmsid\":\"VMSBlock\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1539022768},{\"vmsid\":\"uu4443\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1534917021},{\"vmsid\":\"cms_bhandup\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1539022544},{\"vmsid\":\"vmsBolakk\",\"vmspowerstatus\":\"1\",\"vmspowerdatetime\":1539631400}]"
[{vmsid:'512',vmpowerstatus:'test'…}]
,因此不需要自己序列化结果。只需返回要序列化的对象或可枚举对象

如果需要自定义序列化,可以在web api配置的注册中配置序列化程序

public static void Register(HttpConfiguration config)
{
    //Web API routes
    config.MapHttpAttributeRoutes();

    //configure serializer
    config.Formatters.JsonFormatter.SerializerSettings = new Newtonsoft.Json.JsonSerializerSettings();
    config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;
    config.Formatters.JsonFormatter.SerializerSettings.DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fff'Z'";
}

如果您使用默认序列化程序,只返回ds.Tables[0]作为方法,会发生什么情况?@MarcusHöglund然后我必须将方法的返回类型更改为
Datatable
,但我并不总是返回Datatable。对于eg;在catch中,我返回一个具有两个属性ID的对象,MSGU可以尝试使用返回类型IHttpActionResult,然后执行“return Ok(ds.Tables[0]);”所需的响应是无效的json格式。我知道,回复实际上是我们想要的格式。但是我们的客户端在NodeJS中遇到了一些问题。解析字符串后,他无法访问属性:parsedvariable[0]//给他“[”