繁体   English   中英

来自Web API的自定义Json响应

[英]Custom Json response from web api

我正在研究ASP .Net Web api项目,我们在其中提供自定义对象的响应。 当api在小提琴手中公开时,JsonFormatter将数据格式化为json对象。 这是我们应用程序的框架。

数据对象

public class CustomData
{
  public Records MRecord {get;set;}
  public string ResponseCode {get;set;}
  public string Status {get;set;}
}

public class Records
{
  Public class FirstName {get;set;}
  Public class LastName {get;set;}
}

响应

CustomData : {
  MRecord : [
   {
     FirstName : "1stName",
     LastName : "",
   },
   {
     FirstName : "2Name",
     LastName : "",
   },
 ],
 ResponseCode : "0",
 Status: "Success"
}

预期的格式

CustomData : {
    MRRecordList : {
      MRecord : 
       {
         FirstName : "1stName",
         LastName : "",
       },
      MRecord :
       {
         FirstName : "2Name",
         LastName : "",
       }
     },
     ResponseCode : "0",
     Status: "Success"
    }

考虑到数组对象没有被JsonFormatter拆分并显示为单个实体。 如果有解决方案,请帮助我。

以下是您需要的代码/模型:

void Main()
{
    var c = new CustomData()
    {
        MRecordList = new List<UserQuery.Record>
        {
          new Record{FirstName="A",LastName="B"},
          new Record{FirstName="C",LastName="D"}
        },
        ResponseCode = "0",
        Status = ""     
    };

    JsonConvert.SerializeObject(c).Dump();
}


public class CustomData
{
    public List<Record> MRecordList { get; set; }
    public string ResponseCode { get; set; }
    public string Status { get; set; }
}

public class Record
{
    public string FirstName { get;set;}     
    public string LastName { get;set;}
}

这将产生以下Json:

{
    "MRecordList": [{
        "FirstName": "A",
        "LastName": "B"
    }, {
        "FirstName": "C",
        "LastName": "D"
    }],
    "ResponseCode": "0",
    "Status": ""
}

如果您的要求是以下Json:

{
    "customData": {
        "MRecordList": [{
            "FirstName": "A",
            "LastName": "B"
        }, {
            "FirstName": "C",
            "LastName": "D"
        }],
        "ResponseCode": "0",
        "Status": ""
    }
}

然后对代码进行以下更改:

public class Test
{
    public CustomData customData {get;set;}
}

Test t = new Test{customData = c};

Now serialize t

从上面的示例可以清楚地记住,Json中没有根标签

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM