c# - 使用 Jsonsoft 反序列化期间单行字符串失败
问题描述
我有以下代码行
public T PostData<T>(string url, object content)
{
var result = default(T);
var response = string.Empty;
// other lines of code setting up client in between .. ignoring them for readability
response = client.UploadString(new Uri(url, UriKind.Relative), contentString);
result = JsonConvert.DeserializeObject<T>(response, settings);
}
结果行是代码失败的地方。以上帖子内容调用自
public string GetCustomer(CustomerReq request)
{
var url = string.Format(_apiUrl + "/GetCustomer");
var result = _webApiRouter.Route<string>(url, Enums.HttpMethodType.Post, request);
return result;
}
上面的代码是我们将类型作为字符串传递的地方。它适用于所有对象,直到我得到一个 as 字符串并且响应是一个单词 ex: "test"
Int、byte、double 似乎工作正常。所以现在我想要它如下。在 if 条件下处理此代码的最佳方法是什么
if (response = string i.e one word )
result =(T)Convert.ChangeType(response, typeof(T));
解决方案
DeserializeObject()
可以处理纯字符串,只要它们被引用:
var test = JsonConvert.DeserializeObject<string>("\"test\"");
工作示例:https ://dotnetfiddle.net/35qWGB
如果您无法更改端点,您可以简单地创建第二个PostData()
不执行任何反序列化的重载:
public string PostData(string url, object content)
{
// other lines of code setting up client in between .. ignoring them for readability
return client.UploadString(new Uri(url, UriKind.Relative), contentString);
}
你也可以做一些奇怪的事情,比如:
public T PostData<T>(string url, object content)
{
// other lines of code setting up client in between .. ignoring them for readability
var response = client.UploadString(new Uri(url, UriKind.Relative), contentString);
return typeof(T) == typeof(string)
? (T)(object)response
: JsonConvert.DeserializeObject<T>(response, settings);
}
推荐阅读
- php - Enable TALK_DETECT for channel originated via ARI
- sharepoint - Adding a sub list within a list item within SharePoint 2019
- rust - How to make a struct as a owner of an string at the same time storing a reference of this string?
- angularjs - using storybook with for hybrid angular app
- azure - Azure Devops - 如何防止多个管道同时运行?
- python - 地图餐厅名单刮
- spring - 在springBoot 2中测试组件时的Nullpointer
- reactjs - React Router:到同一组件的某些路由触发即时卸载
- c# - 如何使用第二次出现的数据来更新数据库中的第一次出现,从文本文件 C# 读取原始数据
- python - 如何发送查询集 throw super 方法?