Newtonsoft.Json을 사용하여 나에게 반환되는 일부 JSON 데이터로 작업하고 있습니다. 내가 다시처럼 보이는 뭔가를 얻을 수 있습니다 요청 내용에 따라 :JSON 단일 객체 및 배열 처리
{
"TotalRecords":2,
"Result":
[
{
"Id":24379,
"AccountName":"foo"
},
{
"Id":37209,
"AccountName":"bar"
}
],
"ResponseCode":0,
"Status":"OK",
"Error":"None"
}
또는
{
"Result":
{
"Id":24379,
"AccountName":"foo"
},
"ResponseCode":0,
"Status":"OK",
"Error":"None"
}
그래서 가끔 "결과"는 결과의 배열 또는 "결과"입니다 하나의 응답이 될 수 있습니다.
How to handle both a single item and an array for the same property using JSON.net의 답변을 사용해 보았지만 여전히 오류가 발생합니다. 특히
나는
Newtonsoft.json.jsonSerializationException: 'Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List'...
사용자 정의 변환을 받고 있어요 같이 보인다 :
public class SingleOrArrayConverter<T> : JsonConverter
{
public override bool CanConvert(Type objecType)
{
return (objecType == typeof(List<T>));
}
public override object ReadJson(JsonReader reader, Type objecType, object existingValue,
JsonSerializer serializer)
{
JToken token = JToken.Load(reader);
if (token.Type == JTokenType.Array)
{
return token.ToObject<List<T>>();
}
return new List<T> { token.ToObject<T>() };
}
public override bool CanWrite
{
get { return false; }
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
내 응답 클래스 (들) 마지막으로
public class TestResponse
{
[JsonProperty("Result")]
[JsonConverter(typeof(SingleOrArrayConverter<string>))]
public List<DeserializedResult> Result { get; set; }
}
public class DeserializedResult
{
public string Id { get; set; }
public string AccountName { get; set; }
}
그리고 내 요청 외모처럼 like
List<TestResponse> list = JsonConvert.DeserializeObject<List<TestResponse>>(response.Content);
두 가지 답변 만 있습니까? –
그들은 두 가지 형식 중 하나만을 따르 겠지만 내용은 분명히 다릅니다. 때로는 "결과"에는 단일 객체 또는 최대 100 개의 객체 배열을 반환하는지 여부와 상관없이 여러 번 또는 여러 번 필드가 하나씩 포함됩니다. – gilliduck
이제 코드 솔루션을 작성하려고합니다. –