You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript中用类Jackson库生成带点的JSON字段名

在TypeScript中生成含点(.)字段名的JSON(类Jackson库适配方案)

需求与问题

需要生成含点字段名的JSON,期望输出:

{
    "tasks.max": "1",
    "key.converter": "io.confluent.connect.avro.AvroConverter",
    "topics": "eraseme_topic_schema_test_v05"
 }

使用ts-jackson时,因误用path参数导致输出嵌套对象而非带点字段名,实际输出:

{
  "tasks": { "max": "1" },
  "key": { "converter": "io.confluent.connect.avro.AvroConverter" },
  "topics": "eraseme_topic_schema_test_v05"
}

解决方案

1. 使用jackson-js(推荐)

jackson-js中,@JsonProperty的name参数用于直接指定JSON输出的键名,而非path(path用于解析嵌套JSON结构到类属性)。

修改后的代码:

import { JsonProperty, Serializable, JsonMapper } from 'jackson-js';

@Serializable()
export class MyDomain {
  // 用name指定带点的JSON键名
  @JsonProperty({ name: 'tasks.max' })
  tasks_max: string;

  @JsonProperty({ name: 'key.converter' })
  key_converter: string;

  // 属性名与JSON键名一致时可省略name参数
  @JsonProperty()
  topics: string;
}

// 序列化示例
const mapper = new JsonMapper();
const domain = new MyDomain();
domain.tasks_max = '1';
domain.key_converter = 'io.confluent.connect.avro.AvroConverter';
domain.topics = 'eraseme_topic_schema_test_v05';

const jsonString = mapper.stringify(domain);
console.log(jsonString); // 输出符合期望的带点字段JSON

2. 调整ts-jackson用法

ts-jackson中,@JsonProperty直接传入字符串即可指定JSON键名,而非使用path参数(path用于反向解析嵌套JSON)。

修改后的代码:

import { JsonProperty, Serializable, serialize } from 'ts-jackson';

@Serializable()
export class MyDomain {
  @JsonProperty('tasks.max')
  tasks_max: string;

  @JsonProperty('key.converter')
  key_converter: string;

  @JsonProperty('topics')
  topics: string;
}

// 序列化示例
const domain = new MyDomain();
domain.tasks_max = '1';
domain.key_converter = 'io.confluent.connect.avro.AvroConverter';
domain.topics = 'eraseme_topic_schema_test_v05';

const jsonString = serialize(domain);
console.log(jsonString); // 输出符合期望的带点字段JSON

关键说明

  • path参数的作用是解析嵌套JSON结构到类属性,而非设置输出的JSON键名;
  • 要直接指定带点的JSON字段名,需使用库提供的「键名映射参数」(如jackson-js的name,ts-jackson的直接传参)。

内容的提问来源于stack exchange,提问作者Luis Estrada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 19:39:25