C# 使用Json.Net忽略自定义子项
我有一个json响应,如下所示:C# 使用Json.Net忽略自定义子项,c#,.net,json.net,C#,.net,Json.net,我有一个json响应,如下所示: {"response_values":[110,{"id":14753,"name":"piter"},{"id":14753,"name":"rabbit"}]} 我有一个简单的课程 public class Class1 { [JsonProperty("id")] public int Id { get; set; } [JsonProperty("name")] public string Name { get; se
{"response_values":[110,{"id":14753,"name":"piter"},{"id":14753,"name":"rabbit"}]}
我有一个简单的课程
public class Class1
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
}
当我尝试使用此方法将json转换为对象列表时:
public T Cast<T>(string json)
{
var result = default(T);
var jsonObject = JObject.Parse(json);
if (jsonObject != null)
{
var responseToken = jsonObject["response"];
result = responseToken.ToObject<T>();
}
return result;
}
publictcast(字符串json)
{
var结果=默认值(T);
var jsonObject=JObject.Parse(json);
if(jsonObject!=null)
{
var responseToken=jsonObject[“response”];
结果=responseToken.ToObject();
}
返回结果;
}
像这样
var jsonString=GetJson();
var items=Cast();
我有一个例外,因为值“110”是整数。如何跳过此值?如果希望忽略的值总是在开头,则始终可以使用此选项:
if (jsonObject != null)
{
var responseToken = parsed["response_values"].SkipWhile(j => j.Type != JTokenType.Object);
if (responseToken.Count() > 0) result = responseToken.ToObject<T>();
}
if(jsonObject!=null)
{
var responseToken=parsed[“response_values”].SkipWhile(j=>j.Type!=JTokenType.Object);
如果(responseToken.Count()>0)结果=responseToken.ToObject();
}
如果总是第一个值,您可能更喜欢使用Skip(1)
而不是SkipWhile
。或者,您可以使用Where
忽略或选择消息中的任何标记
当然,您可以使用这种方法(更改内容),具体取决于您希望在成功场景中返回的内容。代码中的“解析”是什么?在我的Visual Studio C#editor中,无法解决此问题。
if (jsonObject != null)
{
var responseToken = parsed["response_values"].SkipWhile(j => j.Type != JTokenType.Object);
if (responseToken.Count() > 0) result = responseToken.ToObject<T>();
}