JSON을 C로 변환

JSON 입력

에디터 로드 중…

생성된 C

Configuration

C 구조체를 생성하려면 JSON 데이터를 입력하세요

관리 함수가 포함된 메모리 안전 구조체

JSON을 C로 변환하는 방법 – 단계별 가이드

이 JSON-C 생성기를 사용하여 임베디드 시스템, C 라이브러리 및 하위 수준 통합을 위한 JSON 샘플에서 C 구조체를 생성합니다.

  1. 1단계 - JSON 샘플 붙여넣기

    • 대표 JSON 개체 또는 배열을 왼쪽 편집기에 붙여넣습니다.
    • 유형이 올바르게 유추되도록 중첩된 개체, 배열 및 null 허용 필드를 포함합니다.
    • Import을 사용하여 파일, URL 또는 샘플 데이터에서 JSON을 로드합니다.
  2. 2단계 - C 구조체 옵션 선택

    • 루트 모델에 대해 명확한 Struct Name을 설정합니다(예: Root).
    • 구문 분석 도우미를 원하는 경우 JSON 라이브러리 사전 설정(예: json-c)을 선택하세요.
    • 배열과 중첩된 개체(종종 수동 처리가 필요한 포인터)가 어떻게 표시되는지 검토하세요.
  3. 3단계 – 생성된 코드 검토

    • 필드 이름, 유형, 배열/객체 모델링 방법을 확인하세요.
    • 가능한 경우 Root Type Name, null 처리 및 프레임워크와 같은 옵션을 조정합니다.
    • 필드가 잘못 추론된 경우 샘플 JSON을 조정하고 다시 생성하세요.
  4. 4단계 - C 프로젝트에 구조체 통합

    • 생성된 .h/.c 파일을 빌드에 추가하고 필요한 곳에 헤더를 포함합니다.
    • 구문 분석(생성된 경우)을 연결하거나 JSON 값을 구조체에 수동으로 매핑합니다.
    • 문자열, 배열, 중첩된 구조체의 할당 및 정리에 주의하세요.
  5. 5단계 - 복사 또는 다운로드

    • 출력을 프로젝트에 복사하거나 파일로 다운로드합니다.
    • 코드 스타일에 맞게 포맷터/린터를 실행하세요.
    • 언어에 필요한 경우 JSON 구문 분석/직렬화 라이브러리를 추가하세요.

빠른 팁

  • 입력 크기를 제어하는 경우에만 고정 크기 버퍼를 선호합니다. 그렇지 않으면 동적 할당을 사용하십시오.
  • 소유권 규칙을 명시적으로 유지하십시오(누가 할당하고 누가 해제하는지).
  • 잘못된 입력에 대한 부분 할당을 방지하려면 구문 분석하기 전에 JSON을 검증하세요.
출력 예(단순화)
// JSON 입력
{
  "id": 123,
  "name": "Maeve Winters",
  "email": "[email protected]",
  "active": true,
  "roles": ["admin", "editor"],
  "metadata": { "plan": "pro" },
  "createdAt": "2024-03-01T10:15:00Z",
  "score": 99.5,
  "notes": null
}

// Generated C structs (simplified)
typedef struct Metadata {
  char* plan;
} Metadata;

typedef struct Root {
  int id;
  char* name;
  char* email; // nullable in JSON
  int active;
  char** roles;
  int roles_count;
  Metadata metadata;
  char* createdAt;
  double score;
  void* notes;
} Root;

관련 JSON & C 도구

이 JSON-C 생성기와 함께 훌륭하게 작동하는 더 많은 JSON 및 스키마 도구를 살펴보세요.

자주 묻는 질문

어떤 C 기능을 지원하나요?

생성기는 표준 C struct 정의를 만들고, 메모리 관리 함수(create/free)를 포함하며, 기본 데이터 타입 매핑과 C 네이밍 규칙을 따릅니다.

메모리 관리는 어떻게 처리되나요?

생성된 코드는 안전한 메모리 할당/해제를 위해 create_ 및 free_ 함수를 포함합니다. 문자열 필드는 수동 메모리 할당이 필요할 수 있습니다.

JSON-C 라이브러리를 지원하나요?

프레임워크에서 'JSON-C'를 선택하면 json-c 라이브러리와 호환되는 코드(필요한 헤더 참조 포함)를 생성합니다.

복잡한 데이터 타입은 어떻게 처리되나요?

배열은 void** 포인터로, 중첩 객체는 void* 포인터로 매핑됩니다. 실제 요구사항에 따라 타입 캐스팅과 메모리 관리가 필요합니다.

JSON을 C로 변환 | JSONSwiss