企评社

라벨은 한국어(으)로 표시됩니다. 기업 리뷰, 게시판, 도구 설명은 현재 중국어로만 제공됩니다.

JSON → 엔티티 클래스

JSON 붙여 넣기로 타입 자동 추정 · Java / TypeScript / Python / Go / C# / PHP 코드 생성

全部在浏览器本地转换,数据不上传、刷新即清空

JSON 输入

对象或对象数组
示例:

生成选项

生成结果


        

类型是怎么推断的

JSON 本身不带类型信息,工具按下面的规则读一遍你的数据(**规则就是这些,没有隐藏逻辑**):

JSON 里的值 Java TypeScript Python Go
整数且在 int 范围内Integernumberintint
整数但超出 int(±2147483648)Longnumberintint64
小数 / 科学计数法Doublenumberfloatfloat64
true / falseBooleanbooleanboolbool
字符串Stringstringstrstring
null(这一处是 null)ObjectanyAnyinterface{}
空数组 []List<Object>any[]List[Any][]interface{}
数组List<元素类型>元素类型[]List[元素类型][]元素类型
嵌套对象静态内部类嵌套 interface独立 dataclass独立 struct

类型冲突与缺失怎么处理(不静默选一个):

  • 同一字段在不同数组元素里类型不同(例如一处是数字、一处是字符串):按"无法确定"处理,生成 Object / any,并在结果上方的提示里点名是哪个字段、出现了哪几种类型,由你决定改成什么。
  • null:无法从 null 推断类型,单独出现时给 Object / any;与其它类型同时出现时按另一边的类型生成,并在注释里标注"可能为 null"。
  • 空数组:不知道元素类型,给 List<Object> / any[] 并提示。
  • 某字段只在部分元素里出现:TypeScript 标为可选(name?:),Java / C# / Go 在注释或 tag 里标注(Java 用 Integer 这类包装类型天然可空)。
  • JSON 里的字段名不是合法标识符或撞上语言关键字(user-name、class、1st、中文名):会改写成合法标识符,并尽最大可能保留原始 key——Java 用 @JsonProperty、C# 用 [JsonPropertyName]、Go 的 json:"…" tag 一定带、Python 用 field(metadata={"json": …})、TypeScript 干脆直接用原始 key 当属性名(带引号),因为 TS 没有注解机制、属性名就是运行时字段名。
  • 改名后的映射代价(如实说明):Java / C# / Go 靠注解或 tag 自动映射,无需手工处理;TypeScript 用原始 key 所以天然正确;Python 的 metadata 只有 dataclasses-json / pydantic 这类库会读,直接 Root(**json.loads(x)) 遇到改名属性会报错;PHP 的 json_decode 按属性名严格映射,改名属性旁边会写 /** 对应 JSON 字段: … */ 注释,序列化/反序列化时请据此手工处理(或改用数组访问)。
  • 数字精度:超过 ±2^53 的整数在 JS 里已经没有精度,工具会提示你改用字符串(生成 String),不要用 Long 去接一个已经失真的值。
  • 类名撞上语言内置类型名(例如字段叫 list 派生出的类名 List,会遮蔽 Java 的 java.util.List / C# 的 System.Collections.Generic.List,直接编译不过):会自动加 Model 后缀(List → ListModel),同名字段仍然照常生成。

生成的代码是起点不是终点:Java 用 Lombok 还是手写 getter/setter、是否加 @JsonIgnoreProperties(ignoreUnknown = true)、日期字段用 String 还是 LocalDateTime,都请按你项目的规范微调。本工具不联网、不读取你项目的任何配置。

자주 묻는 질문

만들어진 타입 정확한가요? null 이랑 빈 배열은요?

JSON 에는 타입 정보가 없어서, 붙여넣으신 데이터의 실제 값으로만 짐작할 수 있어요. null 만 따로 있으면 추론을 못 해서 Object / any 가 되고, 빈 배열은 요소 타입을 몰라 List<Object> / any[] 가 돼요. 같은 칸의 타입이 배열 요소마다 다르면 '정할 수 없음' 으로 Object / any 를 만들고 위 안내에서 어느 칸에 어떤 타입이 나왔는지 이름까지 짚어 줘요. 도구는 짐작도, 말없이 대신 골라 주지도 않아요—그건 당신이 확인해야 할 칸으로 남깁니다.

user-name, class, 1st, 중국어 이름이면 뭐가 나와요?

대상 언어 규칙대로 하되 원래 이름을 최대한 살려요: Java 는 userName / class_ / _1stLogin 으로 고치고 @JsonProperty("user-name") 을 붙여요; C# 은 [JsonPropertyName]; Go 는 무조건 json:"user-name" 태그; Python 은 class_ 처럼 쓸 수 있는 이름+field(metadata={"json": "user-name"}); TypeScript 은 제일 곧장, 속성을 "user-name": string 그대로 써요 (TS 는 주석 장치가 없고 속성 이름이 곧 실행 때 이름이에요—camelCase 로 바꾸면 JSON.parse 결과랑 안 맞아요). 중국어 키는 그대로 둬요 (Java / Python / TypeScript 다 중국어 식별자 허용). 솔직한 주의: Python metadata 는 dataclasses-json / pydantic 쪽 라이브러리만 읽고, PHP json_decode 은 속성 이름으로 딱 붙여 매겨요—이 두 언어는 이름 바꾼 칸을 생성된 주석 보고 손으로 이어 주세요.

JSON 을 잘못 썼으면 어떻게 알려줘요? 줄까지 찾아줘요?

찾아줘요. 검증은 직접 만든 엄격한 해석기가 해요—오류 때 줄번·칸번이랑 사람 말 안내 한 문장 (예: 3 줄 12 칸: 객체 속성 이름은 큰따옴표 필수) 을 띄워요. 흔한 함정은 따로 알아내요: 작은따옴표 문자열, 주석, 꼬리 쉼표, 앞에 0 달린 숫자, true/false/null 철자 틀림, 닫지 않은 괄호. ayrıca 겹치기 64 단계·마디 2 만 개 윗한을 둬서, 넘으면 페이지를 얼리게 하지 않고 또렷이 알려줘요.

무슨 언어 지원해요? JSON 올라가요?

여섯 개예요—Java (Lombok 이나 맨 getter/setter, Jackson @JsonProperty 선택), TypeScript 인터페이스, Python dataclass, Go struct, C# class, PHP class. 올리진 않아요: 풀이·추론·생성 전부 브라우저에서 끝나고, 데이터가 기기 밖 안 나가고, 새로고침하면 지워지고, 올리기 요청도 제3자 의존 (CDN) 도 하나도 없어요. JSON 에 실명·휴대폰번호·신분증번호 같은 민감 칸이 있다면, 로컬 변환은 바로 그걸 어떤 서버에도 안 보내려고 하는 거예요.

관련 도구