Как реализовать с AutoBean список различных базовых типов, таких как String, Integer и т. Д.?

Я хочу создать запрос на JSON-RPC с тремя параметрами - String, Integer и моим собственным объектом. Запрос должен выглядеть так:

{"method":"MyMethod", "params":["text", 123, {"name": "any text", "num": 15}], "id":1}

В идеале я хотел бы создать AutoBean следующим образом (но он не работает):

interface JsonRpcRequest {  

    String getJsonrpc();
    void setJsonrpc(String value);

    String getMethod();
    void setMethod(String value);

    List<Object> getParams(); // ERROR: Type Object may not be used
    void setParams(List<Object> params); // ERROR: Type Object may not be used

} 

interface JsonRpcRequestFactory extends AutoBeanFactory {

    AutoBean<JsonRpcRequest> jsonRpcRequest();

}

Проблема в том, что фреймворк AutoBean не позволяет использовать List<Object> внутренний интерфейс

Есть ли другой способ создать список / массив элементов разных типов, основанных и не основанных?

2 ответа

Решение

Нет, ты просто не можешь. AutoBean требует, чтобы все было статически типизировано: без полиморфизма и без смешанных списков карт.

Возможно, вас заинтересует встроенная поддержка RequestFactory для JSON-RPC.

Почему все ваши параметры должны быть переданы обратно в список? Конечно, вы не собираетесь делать то же самое с String, Integer, и другой Object! Просто отправьте их все обратно отдельно.

Кроме того, вы не отправляете кастом Object через JSON, вы отправляете objid этого объекта... так что просто отправьте Integer id и пусть сервер справится с этим.

Другие вопросы по тегам