如何通过反序列化提取封装在data
响应对象中的返回 json 响应的负载?
这是 json 响应:
{"data":{"status":"ok","created_at":"2017-05-26 17:34:12.224524Z","app_version":1.0,"api_version":1.0}}
我的转换器类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Converters;
namespace Sample.Models
{
class StatusConverter : CustomCreationConverter<Status>
{
public override Status Create(Type objectType)
{
return new Status();
}
}
}
我的模型 Status
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace Sample.Models
{
class Status
{
[JsonProperty("app_version")]
public string AppVersion { get; set; }
[JsonProperty("api_version")]
public string APIVersion { get; set; }
[JsonProperty("status")]
public string CurrentStatus { get; set; }
}
}
API调用使用 RestClient
public void checkConnectivityStatus()
{
var client = new RestClient(BaseUrl);
var request = new RestRequest("status", Method.GET);
IRestResponse response = client.Execute(request);
var content = response.Content; // raw content as string
Status status = JsonConvert.DeserializeObject<Status>(content, new StatusConverter());
Console.Write(status.AppVersion);
}
编辑:更新模型
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace Sample.Models
{
public interface IStatus
{
string AppVersion { get; set; }
string APIVersion { get; set; }
string CurrentStatus { get; set; }
}
[JsonObject]
class Status : IStatus
{
[JsonProperty("app_version")]
public string AppVersion { get; set; }
[JsonProperty("api_version")]
public string APIVersion { get; set; }
[JsonProperty("status")]
public string CurrentStatus { get; set; }
}
}
您只需要一个包装器对象来进行响应。
public class DeserializedResponse
{
[JsonProperty("data")]
public Status Status { get; set; }
}
然后像这样使用它:
//var content = {"data":{"status":"ok","created_at":"2017-05-26 17:34:12.224524Z","app_version":1.0,"api_version":1.0}}
var deserializedResponse = JsonConvert.DeserializeObject<DeserializedResponse>(content);
Debug.Assert(deserializedResponse.Status.CurrentStatus == "ok");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句