> 백엔드 개발 > C++ > 목록 유형에 배열이 아닌 JSON 데이터가 필요한 경우 JSON 역직렬화가 실패하는 이유는 무엇입니까?

목록 유형에 배열이 아닌 JSON 데이터가 필요한 경우 JSON 역직렬화가 실패하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-08 06:17:42
원래의
919명이 탐색했습니다.

Why Does JSON Deserialization Fail When a List Type Expects Non-Array JSON Data?

JSON 역직렬화 오류 처리: 목록 유형 및 비배열 JSON 데이터

Newtonsoft의 JsonConvert를 사용하여 JSON 데이터를 역직렬화할 때 개발자는 다음 오류가 자주 발생합니다. "현재 JSON 개체를 'System.Collections.Generic.List`1[T]' 유형으로 역직렬화할 수 없습니다. 올바르게 역직렬화하세요”

이 오류는 대상 데이터 유형이 목록(오류 메시지에서 'List`1'로 표시됨)이지만 JSON 데이터가 배열이 아닌 경우에 발생합니다. 이 문제를 해결하려면 예상 배열 형식과 일치하도록 JSON 데이터를 수정하거나 배열이 아닌 형식을 허용하도록 대상 데이터 유형을 조정해야 합니다.

JSON 데이터 변환

JSON 데이터가 실제로 배열이지만 이 형식으로 표시되지 않는 경우 역직렬화하기 전에 배열 형식으로 변환해야 합니다. 이 목적으로 JSON.NET의 JObject 또는 JArray 클래스를 사용할 수 있습니다. 예를 들어 JSON 데이터가 다음 형식인 경우:

<code>{"data":[{"target_id":9503123,"target_type":"user"}]}</code>
로그인 후 복사

다음 코드를 사용하여 배열 형식으로 변환할 수 있습니다.

<code>JObject obj = JObject.Parse(jsonstring);
jsonstring = obj["data"].ToString();</code>
로그인 후 복사

이렇게 하면 JSON 데이터가 다음 배열 형식으로 변환됩니다.

<code>[{"target_id":9503123,"target_type":"user"}]</code>
로그인 후 복사

대상 데이터 유형 조정

JSON 데이터가 배열이 아닌 경우 배열이 아닌 형식을 허용하도록 대상 데이터 유형을 조정해야 합니다. 이 경우 List 유형을 RootObject 유형으로 변경해야 합니다. 예:

<code>RootObject datalist = JsonConvert.DeserializeObject<RootObject>(jsonstring);</code>
로그인 후 복사

위 내용은 목록 유형에 배열이 아닌 JSON 데이터가 필요한 경우 JSON 역직렬화가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿