【发布时间】:2019-05-14 15:41:40
【问题描述】:
我想使用 avro-schema 向 kafka 主题发送 JSON 消息。
avro-schema 允许多种类型:
{
"name":"typeA",
"type":[
"int",
"null"
],
"default":null
}
如果值为 null,则一切正常。如果类型是 int 在这种情况下,则必须明确指定。看到这张票AVRO-1582。
我有这个 JSON:
{
"typeA":12345,
"typeB":[
{
"feature":1,
"value":"1"
},
{
"feature":2,
"value":"2"
}
],
"typeC":[
{
"a":12345,
"data":[
{
"a":12345,
"b":[
12345,
12345,
12345
]
}
]
}
]
}
我想转换成这个 JSON:
{
"typeA":{
"int":12345
},
"typeB":{
"array":[
{
"feature":1,
"value":"1"
},
{
"feature":2,
"value":"2"
}
]
},
"typeC":{
"array":[
{
"a":12345,
"data":[
{
"a":12345,
"b":[
12345,
12345,
12345
]
}
]
}
]
}
}
是否可以将"typeA":12345 转换为"typeA":{"int":12345}?是否存在处理此问题的简单方法?
我知道每个字段的类型,所以我可以在 JAVA 中使用正则表达式:
json.replaceAll("typeA\":([^,]*),\"", "typeA\":{\"int\":$1},\"");
很难处理数组或最后一个 JSON 元素。我该如何解决这个问题?
【问题讨论】:
-
我知道这并不能回答你的问题,但我喜欢那句老话“有些人在遇到问题时会想‘我知道,我会使用正则表达式。’”现在他们有两个问题。”我将敦促您考虑使用Jackson 并使用jsonschema2pojo 创建您的json 类。 Baeldung has lots of great tutorials on Jackson 如果您需要帮助。
-
@hooknc,我有一个从 avro 模式生成的 java 类。我从我的模型中使用 Gson 生成 JSON。属性上的注解可以覆盖生成过程吗?