Web Api возвращает нежелательный формат json - PullRequest
0 голосов
/ 16 октября 2018

Метод:

[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',vmspowerstatus:'test'.....}]

1 Ответ

0 голосов
/ 16 октября 2018

Веб-интерфейс Asp.Net сериализует ваш результат в формате json , поэтому вам не нужно самим сериализовывать результат.Просто верните объект или множество объектов для сериализации.

Если вам нужна настраиваемая сериализация, вы можете настроить сериализатор при регистрации конфигурации веб-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'";
}
...