如何以web api的对象格式返回数据?

时间:2015-05-27 06:47:06

标签: c# asp.net json vb.net asp.net-web-api

我必须以json格式返回数据,但它说不能隐式地将类型字符串转换为system.collection.generic.list(object)。

 [HttpGet]
    public List<object> GetAllCompanies2()
    {
        List<object> myCo = DefCompany.AllDefCompany2;
         // return myCo----------> works

        string json = JsonConvert.SerializeObject(myCo);
        return  json; ------- > not works conversion error & i need this
    }

我尝试了tostring()和许多其他方法,但没有任何效果。如何将字符串转换为对象?
这是我的功能代码AllDefCompany2

   public static List<object> AllDefCompany2
    {
        get
        {
            using (var db = new RPDBEntities())
            {

                return db.DefCompanies.Select(b => new 
                {
                    Id = b.Id,

                    CurrentCurrencyCode = b.CurrentCurrencyCode,
                    ShortName = b.ShortName,
                    FullName = b.FullName,
                    ContactPerson = b.ContactPerson,
                    Address1 = b.Address1,
                    CompanyCity = b.CompanyCity,
                    CompanyState = b.CompanyState,
                    CompanyCountry = b.CompanyCountry,
                    ZipPostCode = b.ZipPostCode,
                    TelArea = b.TelArea

                }).ToList<object>();


            }

        }

    }

5 个答案:

答案 0 :(得分:2)

此代码帮助我解决api和kendo问题

[HttpGet]
public List<object> GetAllCompanies2()
{
    List<object> myCo = DefCompany.AllDefCompany2;         

    object json = JsonConvert.SerializeObject(myCo);
    return  json;
}

答案 1 :(得分:1)

这是配置设置

 using System.Data.Entity;

  namespace RpManticSolAPI
  {
public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
        GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
        GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);          
    }
}
 }

答案 2 :(得分:0)

return JsonConvert.SerializeObject(myCo);

答案 3 :(得分:0)

您可以将string转换为object,但您在显示的代码中尝试将其转换为List<object>。您可以尝试在AsEnumerable变量上调用ToListjson

但是如果你想要做的是返回一个字符串,为什么不改变方法的返回类型呢?

答案 4 :(得分:0)

[HttpGet]
public string GetAllCompanies2()
{
    List<object> myCo = DefCompany.AllDefCompany2;
     // return myCo----------> works

    string json = JsonConvert.SerializeObject(myCo);
    return  json; ------- > not works conversion error & i need this
}

试试这个。需要根据是否返回对象列表或字符串(在本例中为json)来更改函数返回类型