Necesito crear un Json con nombres de campo con puntos '.' en la aplicación javascript (mecanografiado)
Salida esperada de Json:
{ "tasks.max": "1", "key.converter": "io.confluent.connect.avro.AvroConverter", "topics": "eraseme_topic_schema_test_v05" }Probé ts-jackson y jackson-js, Ejemplo de código usando ts-jackson
MiDominio.ts
@Serializable() import { JsonProperty,Serializable } from 'ts-jackson'; export class MyDomain{ @JsonProperty({path: 'tasks.max', elementType: String}) tasks_max: string; @JsonProperty({path: 'key.converter'}) key_converter: string; @JsonProperty({path: 'topics'}) topics: string; }Pero las propiedades con puntos se crean como subclases en la salida Json en lugar de un campo de propiedad con punto.
{ tasks: { max: '1' }, key: { converter: { schema: [Object] } }, topics: 'eraseme_topic_schema_test_v05' }¿Cómo puedo establecer puntos en el nombre de los campos Json en Javascript usando una biblioteca similar a Jackson?
Este comentario de joniba en el repositorio de github de lodash muestra cómo acceder a las propiedades que contienen puntos usando lodash:
// lodash set const o = {} _.set(o, 'a["bc"]', 1) // returns { a: { 'b.c': 1 } }Esto funciona con lodash obtener:
// lodash get const obj = {'a.b': 'value'}; _.get(obj, '["ab"]'); // 'value' Por lo tanto, debería ser posible escribir las propiedades de la path ts-jackson de esta manera:
export class MyDomain{ @JsonProperty({path: '["tasks.max"]', elementType: String}) tasks_max: string; @JsonProperty({path: '["key.converter"]'}) key_converter: string; @JsonProperty({path: 'topics'}) topics: string; }