Java 如何将具有默认值的Json字段转换为Avro?字段的默认值无效

Java 如何将具有默认值的Json字段转换为Avro?字段的默认值无效,java,json,gson,avro,Java,Json,Gson,Avro,我有一个带有字段默认值的avro模式。我使用 mvn clean install -DskipTests=true -Dcheckstyle.skip -Dskip.checkstyle -U -Dmaven.wagon.http.ssl.insecure=true 而且还上了课。我试图将JSON字符串转换为avro对象,但没有使用默认值。 有一个错误: [WARNING] Avro: Invalid default for field comment: "test" n

我有一个带有字段默认值的avro模式。我使用

mvn clean install  -DskipTests=true -Dcheckstyle.skip -Dskip.checkstyle -U -Dmaven.wagon.http.ssl.insecure=true
而且还上了课。我试图将JSON字符串转换为avro对象,但没有使用默认值。 有一个错误:

[WARNING] Avro: Invalid default for field comment: "test" not a ["null",{"type":"string","avro.java.string":"String"}]
请帮助我正确填写avsc文件或更改转换代码

模式:

{
  "type" : "record",
  "name" : "Order",
  "namespace" : "com.test",

  "fields" : [
    {    "name" : "snapshot",                "type" : "int", "default": 2          },
    {    "name" : "comment",                 "type" : ["null", "string"] , "default": "test"   }
  ]
}
生成的类:

输入json:

"{"comment":"second"}";
转换代码:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class DeliveryOrder2Runner {
    public static void main(String[] args) {
        final Gson gson = new GsonBuilder().create();

        final String input = "{\"comment\":\"second\"}";

        final Order output = gson.fromJson(input, Order.class);

        System.out.println(output.snapshot + " " + output.comment);
    }
}
实际结果是:

0 second
预期结果:

2 second