>백엔드 개발 >C++ >JSON 속성을 개체 대신 값으로 직렬화하는 방법은 무엇입니까?

JSON 속성을 개체 대신 값으로 직렬화하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-03 09:24:43859검색

How to Serialize JSON Properties as Values Instead of Objects?

JSON 속성을 값으로 직렬화

코드에서 JSON 표현을 활용할 때 속성을 값으로 직렬화하려는 상황이 발생할 수 있습니다. 물건보다는 가치. 이는 보다 간결하고 원하는 JSON 형식을 얻기 위한 것입니다.

Car 및 StringId 클래스와 관련된 다음 예를 고려해 보겠습니다.

class Car
{
    public StringId Id { get; set; }
    public string Name { get; set; }
}

class StringId
{
    public string Value { get; set; }
}

// Desired representation
{ "Id": "someId", "Name": "Ford" }

// Default (undesired) representation
{ "Id" : { "Value": "someId" }, "Name": "Ford" }

원하는 JSON 표현은 Id 및 StringId에 대한 중첩 개체를 제거합니다. 해당 값을 직접 표시합니다. 이를 달성하기 위해 두 가지 접근 방식을 사용할 수 있습니다.

TypeConverter 사용

StringId에 대한 TypeConverter를 구현하면 JSON.NET은 자동으로 이를 사용하여 속성을 다음으로 변환합니다. 문자열:

[TypeConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : TypeConverter
{
    // Implementation omitted for brevity...
}

JsonConverter

이 접근 방식을 사용하려면 StringId 클래스에 특정 JSON.NET 속성을 추가해야 합니다.

[JsonConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : JsonConverter
{
    // Implementation omitted for brevity...
}

두 경우 모두 변환기가 값을 직접 읽고 쓰므로 결과는 다음과 같습니다. 원하는 JSON 표현:

{ "Id": "someId", "Name": "Ford" }

위 내용은 JSON 속성을 개체 대신 값으로 직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.