idtitlesidebar_label
    receive_data
    接收数据
    接收数据

    Forest请求会自动将响应的返回数据反序列化成您要的数据类型。想要接受指定类型的数据需要完成两步操作:

    第一步:定义dataType属性

    dataType属性指定了该请求响应返回的数据类型,目前可选的数据类型有三种: text, json, xml

    Forest会根据您指定的dataType属性选择不同的反序列化方式。其中dataType的默认值为text,如果您不指定其他数据类型,那么Forest就不会做任何形式的序列化,并以文本字符串的形式返回给你数据。

    1. /**
    2. * dataType为text或不填时,请求响应的数据将以文本字符串的形式返回回来
    3. */
    4. @Request(
    5. url = "http://localhost:8080/text/data",
    6. dataType = "text"
    7. )
    8. String getData();

    若您指定为jsonxml,那就告诉了Forest该请求的响应数据类型为JSON或XML形式的数据,就会以相应的形式进行反序列化。

    1. /**
    2. * dataType为json或xml时,Forest会进行相应的反序列化
    3. */
    4. @Request(
    5. url = "http://localhost:8080/text/data",
    6. dataType = "json"
    7. )
    8. Map getData();

    第二步:指定反序列化的目标类型

    反序列化需要一个目标类型,而该类型其实就是方法的返回值类型,如返回值为String就会反序列成String字符串,返回值为Map就会反序列化成一个HashMap对象,您也可以指定为自定义的Class类型。

    1. public class User {
    2. private String username;
    3. private String score;
    4. // Setter和Getter ...
    5. }

    如有上面这样的User类,并把它指定为方法的返回类型,而且相应返回的数据这样一段JSON:

    1. {"username": "Foo", "score": "82"}

    那请求接口就应该定义成这样:

    1. /**
    2. * dataType属性指明了返回的数据类型为JSON
    3. */
    4. @Get(
    5. url = "http://localhost:8080/user?id=${0}",
    6. dataType = "json"
    7. )
    8. User getUser(Integer id)

    1.4.0版本开始,dataType 属性默认为 auto(自动判断数据类型), 也就是说 dataType 属性可以完全省略不填,Forest会自行判断返回的数据类型是哪种格式。

    1. /**
    2. * 省略dataType属性会自动判断返回的数据格式并进行反序列化
    3. */
    4. @Get(url = "http://localhost:8080/user?id=${0}")
    5. User getUser(Integer id)