使用Retrofit在POST请求中发送数组列表会发送带有内存地址的对象,而不是发送值

时间:2017-08-23 11:00:32

标签: java android retrofit

我有一个班级:

public class PetModel{
    Serialized("cat")
    String cat;
    Serialized("dog")
    String dog;
    // getters and setters
}

当我使用这样的改造进行POST时:

@FormUrlEncoded
@POST("/pet/{id}")
Pets postPets(@Path("id") String id,@Field("pets") ArrayList<PetModel> pets);

在日志中,我看到请求发送<package_name>.PetModel@cc49e70而不是自己发送值。我做错了什么?

3 个答案:

答案 0 :(得分:0)

请尝试下面的方法,可能是你会得到解决方案

PrintWriter out = response.getWriter();
List<Countries> country = new ArrayList<Countries>();
country = FetchData.getAllCountries();
JSONObject js = new JSONObject();
js.put("countries", country); // make sure the Country class overrides toString()

// set the response content-type
response.setContentType("application/json");

// writing the json-array to the output stream
out.print(js.toJSONString());
out.flush();

答案 1 :(得分:0)

如果您可以访问服务器端代码并​​且可以更改它,只需添加一个viewmodel或类似于包含泛型类型T的数组列表的类。然后,每个使用arraylists的地方都会使用它。

从服务器检索String类型时存在类似的问题,可以通过相同的方式解决。

答案 2 :(得分:0)

覆盖PetModel课程中的public class PetModel { Serialized("cat") String cat; Serialized("dog") String dog; // getters and setters @Override public String toString() { return "Cat " + cat + " Dog " + dog; } } 方法。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>myproject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh-external</artifactId>
                <version>3.0.0</version>
            </extension>
        </extensions>
    </build>

    <distributionManagement>
        <repository>
            <id>internal</id>
            <url>scpexe://maven@myserver.com/home/maven</url>
        </repository>
    </distributionManagement>
</project>