отправить тело Flume JSONHandler как JSONObject

Я новичок в Flume и работаю над отправкой событий flume, используя источник HTTP. Я могу успешно отправить событие, если полезная нагрузка имеет следующий формат:

[{
"headers" : {
         "timestamp" : "434324343",
         "host" : "random_host.example.com"
         },
"body" : "random_body"
}]

Однако, как и в заголовке, мне нужно отправить тело как JSONObject, а не строку. Например:

[{
"headers" : {
         "timestamp" : "434324343",
         "host" : "random_host.example.com"
         },
"body" : {
         "value1" : "100",
         "value2" : "101"
         }
}]

Как я могу этого добиться?

Заранее спасибо.


person mil06    schedule 13.11.2015    source источник
comment
Какую раковину вы используете? Некоторые из них позволяют сериализовать как заголовки, так и тело. Примеры: stackoverflow.com/questions/33379438/ и stackoverflow.com/questions/27834950/   -  person frb    schedule 17.11.2015


Ответы (1)


По моему мнению, нам не нужно слишком заботиться о том, отправлен JSONObject или нет, мы отправили Json String (можно проанализировать в JSONObject). Вы можете использовать множество инструментов, таких как Gson/FastJson, для преобразования строки в Array/Map или JSONObject.

Ниже приведен пример:

Gson gson = new Gson();
Строка body = "{\"timestamp\":\"434324343\",\"host\":\"random_host.example.com\"}";

Карта карты = gson.fromJson(body, new TypeToken>() {}.getType());

person Tough    schedule 10.12.2015