正在建立一个像这样的JSON字符串:
public String buildAutoCompleteQuery(int from, int pageSize, String criteria) {
StringBuilder autoComplete = new StringBuilder();
autoComplete.append("{").append("\"from\"").append(":").append(from).append(",").append("\"size\"").append(":").append(pageSize).append(",").append("\"query\"").append(":").append("{").append("\"match\"").append(":").append("{")
.append("\"full_text\"").append(":").append("\"").append(criteria).append("\"").append("}").append("}}");
return autoComplete.toString();
}
在输入样本参数后,当您打印它时(使用漂亮的打印),它看起来像这样:
{
"from": 1,
"size": 15,
"query": {
"match": {
"full_text": "Hello"
}
}
}
使用Jackson创建这个JSON对象有没有更简单的方法(有或没有编组/数据绑定)?
答案 0 :(得分:0)
您应该尝试的一种方法是,您可以为对象创建一个类,然后使用Jackson将对象转换为字符串。
{
"from": 1,
"size": 15,
"query": {
"match": {
"full_text": "Hello"
}
}
}
现在为此创建类
public class AutoComplete{
private Integer from;
private Integer size;
private Query query;
// getters and setters
}
public class Query{
private Match match;
}
public class Match{
private String full_text;
}
然后使用Jackson转换自动完成对象,您将获得所需的JSON字符串。
答案 1 :(得分:0)
我会将Jackson的ObjectMapper用于这些目的。您可能想要创建一组描述您的生态系统的对象(如之前的评论)。
(Direction对象 - > json)如果你有一个对象并且你想获得一个JSON字符串,那就使用ObjectMapper#writeValueAsString(Object value)
(方向json->对象)如果你有一个json字符串,可能是一个json文件,并且想要获取一个对象,请使用ObjectMapper#readValue(String content,Class valueType)。 检查好的示例in here
我个人认为ObjectMapper非常方便,您可以将其配置为忽略空值或者让我们说序列化类的私有成员。