Zazwyczaj API powinien przyjąć String
lub byte[]
, więc nie musisz konwertować. Może chcesz CreateIndexRequestBuilder#addMapping(String, String)
?
Jeśli naprawdę, naprawdę, naprawdę potrzebujesz XContentBuilder
, możesz wykonać XContentParser
i skopiować zawartość do konstruktora. Począwszy od Elasticsearch 5.2 powinien to zrobić:
String message = "{\"test\":\"test\"}";
XContentBuilder b = XContentFactory.jsonBuilder().prettyPrint();
try (XContentParser p = XContentFactory.xContent(XContentType.JSON).createParser(NamedXContentRegistry.EMPTY, message)) {
b.copyCurrentStructure(p);
}
System.err.println(b.string());
prawdopodobnie można też zrobić cośz surowego, ale nie sądzę, że warto.
Pre 5.2 nie potrzebujesz części NamedXContentRegistry.EMPTY,
.
Wartość XContentFactory.jsonBuilder(). (Mapowanie) nie działa zgodnie z oczekiwaniami, ponieważ nie otrzymuję root obiektu. Podejrzewam, że nadal musimy dodać .startObject()? – tbo