如何让jackson使用单引号或无引号生成json字符串?

Fre*_*ind 13 json jackson double-quotes

例如,我想生成一个json字符串ng-style:

<th ng-style="{width:247}" data-field="code">Code</th>
Run Code Online (Sandbox Code Playgroud)

但是对于杰克逊,结果是:

<th ng-style="{&quot;width&quot;:247}" data-field="code">Code</th>
Run Code Online (Sandbox Code Playgroud)

这不容易阅读.

所以我希望jackson用单引号或无引号生成json字符串.是否有可能做到这一点?

Per*_*ion 31

如果您可以控制ObjectMapper实例,则将其配置为以您希望的方式处理和生成JSON:

final ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
Run Code Online (Sandbox Code Playgroud)


Rem*_*der 5

JsonGenerator.Feature.QUOTE_FIELD_NAMES
Run Code Online (Sandbox Code Playgroud)

已弃用,您可以使用它来代替:

mapper.configure(JsonWriteFeature.QUOTE_FIELD_NAMES.mappedFeature(), false);
mapper.configure(JsonReadFeature.ALLOW_UNQUOTED_FIELD_NAMES.mappedFeature(), true);
Run Code Online (Sandbox Code Playgroud)

请注意,JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES尚未弃用(截至目前),JsonReadFeature此处提及相应内容只是为了完整性。