Java 如何将具有默认值的Json字段转换为Avro?字段的默认值无效
我有一个带有字段默认值的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
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