Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
如何在Web Api(JSON)结果中指定根名称?_Json_Root_Asp.net Web Api2_Formatter - Fatal编程技术网

如何在Web Api(JSON)结果中指定根名称?

如何在Web Api(JSON)结果中指定根名称?,json,root,asp.net-web-api2,formatter,Json,Root,Asp.net Web Api2,Formatter,我尝试了以下方法,但似乎不起作用。 我正在为此使用web api控制器 这是我的班级,我返回一个班级列表: [JsonObject(Title = "rootNamedObject")] public class RootNamedObject { [JsonProperty("ObjectId")] public int Id { get; set; } [JsonProperty("Description")]

我尝试了以下方法,但似乎不起作用。

我正在为此使用web api控制器

这是我的班级,我返回一个班级列表:

 [JsonObject(Title = "rootNamedObject")]
    public class RootNamedObject
    {
        [JsonProperty("ObjectId")]
        public int Id { get; set; }
        [JsonProperty("Description")]
        public string Description { get; set; }
    }
[
{
    "ObjectId": 1,
    "Description": "Description 1",
},
{
    "ObjectId": 2,
    "Description": "Description 2",
}
]
 {
  "rootNamedObject": [
    { 
      "ObjectId": 1, 
      "Description": "Description 1" 
     }
现在这是我的结果:

 [JsonObject(Title = "rootNamedObject")]
    public class RootNamedObject
    {
        [JsonProperty("ObjectId")]
        public int Id { get; set; }
        [JsonProperty("Description")]
        public string Description { get; set; }
    }
[
{
    "ObjectId": 1,
    "Description": "Description 1",
},
{
    "ObjectId": 2,
    "Description": "Description 2",
}
]
 {
  "rootNamedObject": [
    { 
      "ObjectId": 1, 
      "Description": "Description 1" 
     }
我需要生成这个:

 [JsonObject(Title = "rootNamedObject")]
    public class RootNamedObject
    {
        [JsonProperty("ObjectId")]
        public int Id { get; set; }
        [JsonProperty("Description")]
        public string Description { get; set; }
    }
[
{
    "ObjectId": 1,
    "Description": "Description 1",
},
{
    "ObjectId": 2,
    "Description": "Description 2",
}
]
 {
  "rootNamedObject": [
    { 
      "ObjectId": 1, 
      "Description": "Description 1" 
     }

基本上只需将类的名称添加到结果中即可

我在ember中遇到了这个问题,发现对我来说最好的解决方案是构建一个新的序列化程序并重写normalizePayload方法。代码如下:

导出默认DS.RESTSerializer.extend({
normalizePayload:功能(有效负载){
var root=“posts”;
var输出={};
输出[根]=有效载荷;
返回输出;
} });


这将封装初始响应并向其添加根,希望有帮助

这可以通过另一个层次结构级别来完成:例如,
class Response{RootNamedObject Result{get;set;}}
我以前在一个线程中看到过(找不到链接),但是如果可能的话,我试图避免这种情况。它似乎可以用于重命名属性,所以我猜应该有一种方法可以在不创建额外级别的情况下实现这一点。