Java 如何直接从JsonGenerator构建JsonNodes树
我已经有了使用Java 如何直接从JsonGenerator构建JsonNodes树,java,json,jackson,Java,Json,Jackson,我已经有了使用JsonGenerator编写JSON的工作流程。现在我需要将此数据传递给另一个进程,该进程期望POJO作为输入并生成JSON。当然,我希望避免构建另一个已经序列化为JSON的数据对象图 我第一次考虑使用@JsonRawValue,但不幸的是,is不起作用,因为注释需要位于属于另一个进程的类的字段上,并且不能更改 但是,如果我将一个JsonNodes树传递给另一个进程,事情就会正常进行。问题是,我能找到的创建JsonNode树的唯一方法是解析流。我想我可以使用现有的生成器为解析器或
JsonGenerator
编写JSON的工作流程。现在我需要将此数据传递给另一个进程,该进程期望POJO作为输入并生成JSON。当然,我希望避免构建另一个已经序列化为JSON的数据对象图
我第一次考虑使用@JsonRawValue
,但不幸的是,is不起作用,因为注释需要位于属于另一个进程的类的字段上,并且不能更改
但是,如果我将一个JsonNodes
树传递给另一个进程,事情就会正常进行。问题是,我能找到的创建JsonNode
树的唯一方法是解析流。我想我可以使用现有的生成器为解析器或其他树生成器提供数据
有这样的解决办法吗?我错过了什么?您必须实现一个累加
JsonToken
s(而不是直接写入字节流)的JsonGenerator
,以及一个迭代现有JsonToken
的JsonParser
(而不是从字节流解析它们)
更新:Jackson有一个类实现了以下功能:
TokenBuffer t = new TokenBuffer(new ObjectMapper());
t.writeStartObject();
t.writeStringField("message", "Hello!");
t.writeEndObject();
JsonParser parser = t.asParser();
有一个
JsonNodeFactory
。@fge您能详细说明一下吗?JsonNodeFactory
允许您从头开始创建任何类型的JsonNode
实例。但您也可以将POJO序列化为JSON。现在还不清楚您到底想要什么?好的,明确表示我想要从生成器直接构建一个JsonNodes树。对不起,我这里有点困惑。。。我不使用JsonGenerator
,而是使用JsonNodeFactory
pluntity;)同意!我可以实现一个产生JsonGenerator的JsonNode。我还以为已经有了解决办法呢。再看一眼,瞧!Jackson附带了一个com.fasterxml.Jackson.databind.util.TokenBuffer
类,该类实现了JsonGenerator
,并具有一个asParser()
方法来获取JsonParser
。