我有一个具体的问题,我无法处理。
我正在使用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),但它并不像我预期的那样对我有用。我很确定,需要更容易的东西,但我需要你的帮助。
谢谢你的建议。弗朗齐歇克
您可以尝试编写两个拆分物种模型,一个用于接收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}]}
注意
有两种方法可以轻松创建模型。
您可以尝试使用这些模型来携带JSON格式。