我使用的是Avro版本1.10.2
我有以下模式,optionalfield
作为可选JSON字符串:
{
"namespace": "foo.bar",
"name": "FooBar",
"type": "record",
"fields": [
{
"name": "optionalField",
"type": [
"null",
"string"
]
}
]
}
我使用Avro Maven插件来执行代码生成。
但是,当我使用以下代码对此对象的实例进行编码时:
FooBar fooBar = FooBar.newBuilder()
.setOptionalField("value")
.build();
Schema schema = fooBar.getSchema();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Encoder jsonEncoder = EncoderFactory.get().jsonEncoder(schema, byteArrayOutputStream);
SpecificDatumWriter<Object> writer = new SpecificDatumWriter<>(schema);
writer.write(fooBar, jsonEncoder);
jsonEncoder.flush();
System.out.println(byteArrayOutputStream.toString());
输出为:
{"optionalField":{"string":"value"}}
而不是我所期望的:
{"optionalField":"value"}
据我所知,Avro规范中似乎没有任何内容暗示只有记录可以是可选的。此外,根据工会:
如上所述,联合是使用JSON数组表示的。例如,[“null”,“string”]声明一个模式,该模式可以是null或字符串。
我的理解是否正确,Avro真的允许可选字符串字段?这是窃听器吗?我错过了什么?
我的理解是否正确,Avro真的允许可选字符串字段?
是的,Avro支持null
和string
的联合
我错过了什么?
Avro JSON编码器的工作方式与您预期的不同。正如https://avro.apache.org/docs/current/spec.html#json_encoding中提到的,联合是以类型信息作为字典而不是仅仅以值来编码的。Avro ticket tracker中有一个悬而未决的问题,它要求您查找的格式,但尚未解决:https://issues.apache.org/jira/browse/avro-1582
我使用的是Avro版本1.10.2 我有以下模式,作为可选JSON字符串: 我使用Avro Maven插件来执行代码生成。 但是,当我使用以下代码对此对象的实例进行编码时: 输出为: 而不是我所期望的: 据我所知,Avro规范中似乎没有任何内容暗示只有记录可以是可选的。此外,根据工会: 如上所述,联合是使用JSON数组表示的。例如,[“null”,“string”]声明一个模式,该模式可以是nul
我想将一个字符串编码成并通过套接字传输它,然后解码回来。 下面是我的代码,结果是“77+9x6s=” 有什么想法如何实现这一点吗?
问题内容: 我正在寻找一种在Java中编码字符串的方法,就像php的本机函数一样。 我试图使用JavaMails的MimeUtility库。但是我无法使该方法起作用,因为它采用OutputStream作为输入而不是字符串(我使用该函数转换了字符串)并输出了无法返回字符串的内容(我是Java noob :) 谁能给我提示如何编写将字符串转换为OutputStream并在编码后将结果输出为String
So do not worry about tomorrow, for tomorrow will bring worries of its own. Today's trouble is enough for today. (MATTHEW 6:34) 字符编码 其实,标题前面应该加两个字——“坑爹”。 在实践中,字符编码的确是一个“坑”。因为这个世界上,不都是英文。如果都是英文,就没有这个问题
问题内容: ’=?KOI8-R?B?W1JFUS0wMDI1NDEtNDc5NzddIO / h7yAi89TSz8rGwdLGz9IiIDs =?= \ r \ n \ t =?KOI8-R?B?Ry43MjkgKDEwKQ ==?=’ 如何将其转换为可读的内容?谢谢 ! 问题答案: email.header.decode_header(‘=?KOI8-R?B?W1JFUS0wMDI1NDEtN
在查看Ruby的base64.encode的源代码时,我无法确定在base64中编码数据之前,将字符串编码转换为什么字符(如果有的话)。在Base64中编码的Utf-8字符串将与在Base64中编码的Utf-16字符串有很大不同。Ruby对这次行动有什么promise吗?