For example, I want to generate a json string for ng-style
:
<th ng-style="{width:247}" data-field="code">Code</th>
But with jackson, the result is:
<th ng-style="{"width":247}" data-field="code">Code</th>
It's not easy to read.
So I want jackson to generate the json string with single quote or no quotes. Is it possible to do this?
If you have control over the ObjectMapper
instance, then configure it to handle and generate JSON the way you want:
final ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
The simplest and the best option is to use regular expression and update the string value.
The sample code is as listed below.
partNumberList=partNumberList.replaceAll(":", ":\"").replaceAll("}", "\"}");
The complete code is as shown below
public static void main(String[] args) throws JsonParseException, JsonMappingException,
IOException {
TestJack obj = new TestJack();
//var jsonString ='{"it":"Stati Uniti d'America"}';
// jsonString =jsonString.replace("'", "\\\\u0027")
ObjectMapper mapper = new ObjectMapper();
String partNumberList = "[{productId:AS101R}, {productId:09902007}, {productId:09902002}, {productId:09902005}]";
partNumberList = partNumberList.replaceAll(":", ":\"").replaceAll("}", "\"}");
System.out.println(partNumberList);
mapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
List<ProductDto> jsonToPersonList = null;
jsonToPersonList = mapper.readValue(partNumberList, new TypeReference<List<ProductDto>>() {
});
System.out.println(jsonToPersonList);
}