> 백엔드 개발 > C++ > 배열이 객체로 예상되는 경우 JSON 역직렬화가 실패하는 이유는 무엇입니까?

배열이 객체로 예상되는 경우 JSON 역직렬화가 실패하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-27 05:21:11
원래의
149명이 탐색했습니다.

Why Does JSON Deserialization Fail When an Array is Expected as an Object?

JSON 배열을 예상 개체로 역직렬화하지 못했습니다. "배열을 개체로 역직렬화할 수 없습니다."

JSON 배열을 특정 클래스의 개체로 역직렬화하려고 하면 다음 오류가 발생할 수 있습니다. "'MyClass' 유형에 JSON 배열(예: [1,2,3])을 역직렬화할 수 없습니다. 해당 유형에는 JSON 개체가 필요하기 때문입니다. (예: {"name":"value"})을 올바르게 역직렬화할 수 있습니다."

이 오류는 JSON 데이터가 배열 형식이지만 대상 클래스는 단일 개체 형식을 예상함을 나타냅니다. 이 문제를 해결하려면 다음을 고려하십시오.

1. JSON 배열을 컬렉션으로 역직렬화합니다.

JSON 배열을 객체 컬렉션으로 역직렬화하려는 경우 다음과 같이 코드를 수정할 수 있습니다.

<code class="language-csharp">var objResponse1 = JsonConvert.DeserializeObject<List<RetrieveMultipleResponse>>(JsonStr);</code>
로그인 후 복사

이 경우 JSON 배열은 RetrieveMultipleResponse 개체 목록으로 역직렬화됩니다.

2. JSON의 형식이 개체로 올바른지 확인하세요.

또는 JSON 데이터를 단일 객체로 역직렬화해야 하는 경우 JSON 형식이 올바른지 확인할 수 있습니다. JSON 문자열은 중괄호({})로 묶어야 하며 키-값 쌍을 포함해야 합니다. 다음 JSON 예제는 유효한 객체를 나타냅니다.

<code class="language-json">{
    "Attributes": [
        ...
    ],
    "Name": "account",
    "Id": "1"
}</code>
로그인 후 복사

JSON을 개체로 형식화한 후 다음 코드를 사용하여 역직렬화할 수 있습니다.

<code class="language-csharp">var objResponse1 = JsonConvert.DeserializeObject<RetrieveMultipleResponse>(JsonStr);</code>
로그인 후 복사

기타 옵션:

  • 대상 클래스에 [JsonArray] 속성을 ​​추가하여 JSON 배열에서 역직렬화를 강제할 수도 있습니다.
  • JSON 데이터를 제어할 수 있는 경우 역직렬화하기 전에 원하는 개체 형식으로 수정할 수 있습니다.

위 내용은 배열이 객체로 예상되는 경우 JSON 역직렬화가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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