C# 仅使用Newtonsoft c将JSON字符串反序列化为条件数据的实际对象#
我在web API项目中工作,我将数据列表(C# 仅使用Newtonsoft c将JSON字符串反序列化为条件数据的实际对象#,c#,.net,json.net,asp.net-web-api2,json-deserialization,C#,.net,Json.net,Asp.net Web Api2,Json Deserialization,我在web API项目中工作,我将数据列表(list)存储在cache中,作为JSON字符串,此缓存对象可能有数千条记录,有时我们需要从缓存列表中获取少量记录,但由于缓存中存储的数据是JSON字符串,因此我们必须先“反序列化”它,然后在转换对象(list)中使用Linq搜索该项。 如果有任何方法可以反序列化JSON字符串中的only条件值,则此过程不必要地将整个JSON字符串转换为object,以仅获取我想要调优的少数项 目前我正在使用Newtonsoft.Json库进行反序列化 pub
list
)存储在cache
中,作为JSON
字符串,此缓存对象可能有数千条记录,有时我们需要从缓存列表中获取少量记录,但由于缓存中存储的数据是JSON字符串,因此我们必须先“反序列化”它,然后在转换对象(list
)中使用Linq
搜索该项。
如果有任何方法可以反序列化JSON字符串中的
only条件值,则此过程不必要地将整个JSON字符串转换为object,以仅获取我想要调优的少数项
目前我正在使用Newtonsoft.Json
库进行反序列化
public static T ConvertToType<T>(string jsonResponse)
{
T result = default(T);
result = string.IsNullOrEmpty(jsonResponse) ? result : JsonConvert.DeserializeObject<T>(jsonResponse);
return result;
}
假设在上面的JSON字符串中,我只想得到包含“code”的元素:“DUPLICATE_CHECK”
,那么序列化只应该发生在下面的部分,因此我应该在列表中只得到一条记录,或者尽可能地作为一个单独的项
{
"ID": 8,
"Code": "DUPLICATE_CHECK",
"Description": "This {0} already exists.",
"Type": "2",
"IsActive": "Y"
}
请告诉我是否有任何方法可以做到这一点。为什么要将数据缓存为字符串而不是已经水合的对象?无需序列化,只需按原样缓存对象集合。这似乎是一个@Nkosi控制器方法使用ActionFilterAttribute存储在缓存中的数据。请检查我的日志,我正在从filterContext.Response.Content.ReadAsStringAsync()读取OnActionExecuted方法中的数据。因此,它作为JSON字符串存储在缓存中。
{
"ID": 8,
"Code": "DUPLICATE_CHECK",
"Description": "This {0} already exists.",
"Type": "2",
"IsActive": "Y"
}