如何使web api以所需格式返回json?
我在web api中使用以下代码返回json: 所以,这里是dto类。但不清楚如何将其映射到结果如何使web api以所需格式返回json?,json,asp.net-web-api,Json,Asp.net Web Api,我在web api中使用以下代码返回json: 所以,这里是dto类。但不清楚如何将其映射到结果 public class grafikresult { int kodg { get; set; } string name { get; set; } DateTime data { get; set; } byte pax { get; set; } byte ch { get; set; } } 以下是控制器代码: // GET api/Grafi
public class grafikresult
{
int kodg { get; set; }
string name { get; set; }
DateTime data { get; set; }
byte pax { get; set; }
byte ch { get; set; }
}
以下是控制器代码:
// GET api/Grafik/5
public IHttpActionResult GetGrafik(int id)
{
PhuketEntities db = new PhuketEntities();
xTourist t = db.xTourist.Find(id);
var result = from a in db.Grafik
join b in db.Exc on a.Excursion equals b.Kod
join c in db.Dates on a.Kodd equals c.kodd
join d in db.Staff on a.Guide equals d.Kod
where c.Date > t.ArrDate && c.Дата < t.DepDate
select new { kodg = a.Kodg, name = d.Name, data = c.Date, pax = t.Pax, ch = t.Child };
return Ok(result);
}
如何更改web api控制器代码以获得此json:
{
"$id": "1",
"kodg": -1643387437,
"name": null,
"data": "2014-02-07T00:00:00",
"pax": 2,
"ch": 0
}, {...}
}
创建一个DTO类,该类具有需要返回的确切结构。然后将
result
上项目的结构映射到PhuketDTO
,并将DTO列表分配到Ok
,就像当前对result
所做的那样,创建一个具有需要返回的确切结构的DTO类。然后将result
上的项目结构映射到PhuketDTO
,并将DTO列表分配到Ok
,就像当前对result
所做的那样,您可以尝试使用
1.为Json创建类
在使用之前,您需要将JSON对象转换为C#类。试试看
如果您在定义类时遇到困难,以下是我认为适合您的方法
为第一个json初始化
public class JsonClassA
{
int id{ get; set; }
Details values { get; set; }
}
public class Details
{
int kodg { get; set; }
string name { get; set; }
DateTime data { get; set; }
byte pax { get; set; }
byte ch { get; set; }
}
为第二个json初始化
public class JSONClassB
{
int kodg { get; set; }
string name { get; set; }
DateTime data { get; set; }
byte pax { get; set; }
byte ch { get; set; }
}
2.使用JavaScriptSerialize反序列化:
你可以试试使用
1.为Json创建类
在使用之前,您需要将JSON对象转换为C#类。试试看
如果您在定义类时遇到困难,以下是我认为适合您的方法
为第一个json初始化
public class JsonClassA
{
int id{ get; set; }
Details values { get; set; }
}
public class Details
{
int kodg { get; set; }
string name { get; set; }
DateTime data { get; set; }
byte pax { get; set; }
byte ch { get; set; }
}
为第二个json初始化
public class JSONClassB
{
int kodg { get; set; }
string name { get; set; }
DateTime data { get; set; }
byte pax { get; set; }
byte ch { get; set; }
}
2.使用JavaScriptSerialize反序列化:
Claudio,我的背景是基于vb.net和linq的,如果你能给出任何这样的例子,我将不胜感激。@andrey.shedko:检查json的结构,你需要将其转换为C#类结构。如果你在这方面有困难,再来找我,我很乐意帮助你。老实说,是的,我在这方面有困难。克劳迪奥,我的背景是基于vb.net和linq的,所以如果你能给出任何这样的例子,我将不胜感激。@andrey.shedko:检查json的结构,你需要返回一个翻译为C#类结构的json。如果你在这方面有困难,再来找我,我很乐意帮忙。老实说,是的,我在这方面有困难。这看起来很棒。让我试试这个解决方案。你的解决方案和这个类似吗@andrey.shedko不,我看到了你发布的链接,这是一个完全不同的问题和答案。此解决方案对您有效吗?尚未尝试。我会让你们知道的。jsonInput应该是LINQ查询的结果(var结果),对吗?这看起来很棒。让我试试这个解决方案。你的解决方案和这个类似吗@andrey.shedko不,我看到了你发布的链接,这是一个完全不同的问题和答案。此解决方案对您有效吗?尚未尝试。我会让你们知道的。jsonInput应该是LINQ查询的结果(var结果),对吗?
JSONClassB finalOutput = AutoMapper.CreateMap<JsonClassA, JSONClassB>()
.ForMember(dest => dest.prop1, opts => opts.MapFrom(src => src.propAAA))
.ForMember(dest => dest.prop2, opts => opts.MapFrom(src => src.propBBB));
return Ok(finalOutput );