是否有任何标准的方法来处理包含公共字段的JSON响应,而这些字段可以作为Array(JArray)或Object(JObject)返回?
样本: 两个响应均来自同一端点。 如果请求失败,响应1(字段数据=>类型的数组)
{
"code": "1","message": "Chatterjee","data": [{"test"}],}
如果请求成功,响应2(字段数据=>类型的对象)
{
"code": "1","data": {
"name": "test"
},}
现在我有两种类型用于反序列化。
public abstract class PushHubBaseResult
{
public PushHuberrorCode Code { get; set; }
public bool Success { get; set; }
public string Message { get; set; }
public abstract object GetData();
}
public class PushHubResult : PushHubBaseResult
{
public JArray Data { get; set; }
public override object GetData()
{
return Data;
}
}
public class PushHubResultTransfer : PushHubBaseResult
{
public JObject Data { get; set; }
public override object GetData()
{
return Data;
}
}
根据请求成功的情况,我将进行一两个反序列化。
IRestResponse<PushHubResultTransfer> result = client.Deserialize<PushHubResultTransfer>(response);
if (result.IsSuccessful)
return result.Data;
else
{
// Try to deserialize failed response
IRestResponse<PushHubResult> resultFailed = client.Deserialize<PushHubResult>(response);
if (resultFailed.Data != null)
return resultFailed.Data;
}
仅进行一次反灭菌处理如何处理?喜欢:
IRestResponse<TypeX> result = client.Deserialize<TypeX>(response);
if (result.IsSuccessful)
return result.Data;
else
{
if (resultFailed.Data != null)
return resultFailed.Data;
}
更新:
我切换到“动态”模式,使它可以在单个课程中使用。因为在后端没有任何转换。在这种情况下,它将1:1转发给JS客户端。
public class PushHubResult
{
public PushHuberrorCode Code { get; set; }
public bool Success { get; set; }
public string Message { get; set; }
public dynamic Data { get; set; }
}