2016-11-27 3 views
0

Во время вызова/сообщений конечной точки wit.ai их documentation говорит, что они пришлют ответ следующего формата:Json к Pojo converstion для ответа от wit.ai

{ 
"msg_id": "387b8515-0c1d-42a9-aa80-e68b66b66c27", 
"_text": "how many people between Tuesday and Friday", 
"entities": { 
    "metric": [ { 
    "metadata": "{'code': 324}", 
    "value": "metric_visitor", 
    "confidence": 0.9231 
    } ], 
    "datetime": [ { 
    "value": { 
     "from": "2014-07-01T00:00:00.000-07:00", 
     "to": "2014-07-02T00:00:00.000-07:00" 
    }, 
    "confidence": 1 
    }, { 
    "value": { 
     "from": "2014-07-04T00:00:00.000-07:00", 
     "to": "2014-07-05T00:00:00.000-07:00" 
    }, 
    "confidence": 1 
    } ] 
} 

}

Теперь я не понимаю, что какая структура POJO может содержать такой ответ, который имеет почти все динамическое. AFAIK, перечисленные в json, являются парами ключевых значений <String,List<Object>>. Где сам объект представляет собой пару ключевых значений, где значения могут быть любого типа String, float или даже другой карты.

Преобразователи Json в Pojo не могут помочь в этом случае при создании классов имен ключей, и эти клавиши являются динамическими. Может ли кто-нибудь помочь мне понять, как обращаться с этими видами jsons?

ответ

0

Я старалась его себе и следующая структура работала хорошо до сих пор:

public class WitMsgResponse { 
    @JsonProperty("msg_id") 
    String msgId; 

    @JsonProperty("_text") 
    String text; 

    @JsonProperty("entities") 
    public Map<String,List<Map<String,Object>>> entities; 
} 

Я постоянно проверять InstanceOf для экземпляров объектов, так как один ключ может иметь несколько значений вида объекта.