1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/consolelog-chinese_translation_of_elasticsearchjavaapi

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
GenerateJSONDocument.md 2.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
王斌 Отправлено 22.05.2019 09:50 3cfb745

生成JSON文档

有下面几种方式生成一个JSON文档:

  • 手动使用byte[]String类型来拼接一个JSON
  • 使用Map类型会自动转换成等效的JSON
  • 使用第三方库(例如:Jackson)来把你的Bean转换成Json格式
  • 使用内置的 XContentFactory.jsonBuilder() 工具

在内部,所有类型都会转换成 byte[] 类型。因此,如果你的对象已经是这种格式了,那么就直接使用它吧。 当然 jsonBuilder 是一个高度优化的工具,你可以使用它来直接构造 byte[]

手动拼接

如果你使用过json格式,那么这里对你来说没什么困难的, 唯一需要注意的是你需要通过Date Format 对日期进行格式化。

String json = "{" +
        "\"user\":\"kimchy\"," +
        "\"postDate\":\"2013-01-30\"," +
        "\"message\":\"trying out Elasticsearch\"" +
    "}";

使用Map

Map是一个键值对的集合,它可以表现为一个JSON结构:

Map<String, Object> json = new HashMap<String, Object>();
json.put("user","kimchy");
json.put("postDate",new Date());
json.put("message","trying out Elasticsearch");

使用第三方库

你可以使用Jackson将你的Bean序列化成JSON。 请将Jackson Databind加入你的项目中。 然后你就可以使用 ObjectMapper 来序列化你的Bean了:

import com.fasterxml.jackson.databind.*;

// instance a json mapper
ObjectMapper mapper = new ObjectMapper(); // create once, reuse

// generate json
byte[] json = mapper.writeValueAsBytes(yourbeaninstance);

使用ES内置的工具

ES提供了一个内置的工具来帮助你生成JSON内容:

import static org.elasticsearch.common.xcontent.XContentFactory.*;

XContentBuilder builder = jsonBuilder()
    .startObject()
        .field("user", "kimchy")
        .field("postDate", new Date())
        .field("message", "trying out Elasticsearch")
    .endObject()

这里需要注意,你也可以使用 startArray(String) / endArray() 方法代替 startObject() / endObject() 方法来添加一个数组。 顺便说一下,field 可以接受很多对象类型。你可以直接传一个numberdate 或者是其它 XContentBuilder 类型的对象。

如果你想查看生成的JSON内容,你可以使用 string() 方法:

String json = builder.string();

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/consolelog-chinese_translation_of_elasticsearchjavaapi.git
git@api.gitlife.ru:oschina-mirror/consolelog-chinese_translation_of_elasticsearchjavaapi.git
oschina-mirror
consolelog-chinese_translation_of_elasticsearchjavaapi
consolelog-chinese_translation_of_elasticsearchjavaapi
master