使用JSON Body Serialization的POST请求

问题描述 投票:1回答:1

我有一个具体的问题,我无法处理。

我正在使用HTTP Get API请求,我正在获取JSON字符串,我正在反序列化,这非常有效。但是,我需要重用两对这个JSON文件,但需要将其粘贴为POST请求的JSON主体。让我告诉你一个例子:

输出GET API请求:

{
  "message":{
      "value":[
         {
           "Reference":null,
           "Key":"abc",
           "IssueNumber":123
         },
         {
           "Reference":null,
           "Key":"def",
           "IssueNumber":345
         }
       ]
     }
   }

所以现在我可以反序列化这个JSON字符串(即:jsonString(“value)(0)(”Key“),我将获得”abc“)。

但是现在,我不知道如何序列化这个反序列化的对象以使用ReviewStatus和Key。这个POST请求JSON主体看起来像这样:

{
   "newStatus":"New"
   "queueItems": [
     {
        "Key":"abc"
        "IssueNumber":123
     },
     {
        "Key":"def"
        "IssueNumber":456
     }
  ]
}

For循环适用于我,但在这种情况下,我将为每个项目执行API调用,而不是仅执行一个POST API调用。您认为最好的解决方案是什么?我试图使用Newtonsoft.Json.JsonConvert(SerializeObject Method),但它并不像我预期的那样对我有用。我很确定,需要更容易的东西,但我需要你的帮助。

谢谢你的建议。弗朗齐歇克

c# json api json.net
1个回答
1
投票

您可以尝试编写两个拆分物种模型,一个用于接收JSON模型,另一个用于响应JSON模型。

接收模型

public class Value
{
    public object Reference { get; set; }
    public string Key { get; set; }
    public int IssueNumber { get; set; }
}

public class Message
{
    public List<Value> value { get; set; }
}

public class ReciveModel
{
    public Message message { get; set; }
}

响应模型

public class QueueItem
{
    public string Key { get; set; }
    public int IssueNumber { get; set; }
}

public class ResponseModel
{
    public string newStatus { get; set; }
    public List<QueueItem> queueItems { get; set; }
}

接收您的JSON数据并反序列化为ReciveModel对象,然后将数据放入另一个实例ResponseModel

最后,您使用JsonConvert.SerializeObject序列化然后将实例作为JSON数据。

var obj = JsonConvert.DeserializeObject<ReciveModel>(JsonData);
var res = new ResponseModel() {
    newStatus = "New",
    queueItems = obj.message.value.Select(x => new QueueItem() {
        IssueNumber = x.IssueNumber,
        Key = x.Key
    }).ToList()
};
var jsonResult = JsonConvert.SerializeObject(res);

结果

{"newStatus":"New","queueItems":[{"Key":"abc","IssueNumber":123},{"Key":"def","IssueNumber":345}]}

c# online

注意

有两种方法可以轻松创建模型。

  • 您可以在Visual Studio中使用Web Essentials,使用编辑>粘贴特殊>粘贴JSON作为类,您可以更容易地了解Json和模型之间的关系。
  • 如果您不能使用Web Essentials,则可以使用http://json2csharp.com/在线JSON到Model类。

您可以尝试使用这些模型来携带JSON格式。

© www.soinside.com 2019 - 2024. All rights reserved.