【发布时间】:2021-08-21 05:06:57
【问题描述】:
目前我正在通过 POST 单独发送变量。我想将所有项目编译为 JSON 数组并将其发送到我的服务器。
public interface ProfilesApi {
@FormUrlEncoded
@POST("upload_profiles.php")
Call<ResponsePojo> uploadProfiles(
@Field("profResCodePost") String resCode,
@Field("profProfilePost") String profile,
@Field("profNameRespondentPost") String nameRespondent,
@Field("profDateSurveyed") String dateSurveyed
);
}
JSON 数组也是“@Field”还是应该是“@Body”?
JsonArray jsonArray = new JsonArray();
for (int i = 0; i < listProfiles.size(); i++) {
JsonObject jsonObject = new JsonObject();
ListProfiles currentProfile = listProfiles.get(i);
jsonObject.addProperty("profResCodePost", currentProfile.profileResCode);
jsonObject.addProperty("profProfilePost", currentProfile.profileProfile);;
jsonObject.addProperty("profOwnerTypePost", currentProfile.profileOwnerType);
jsonObject.addProperty("profNameRespondentPost", currentProfile.profileNameRespondent);
jsonObject.addProperty("profDateSurveyed", currentProfile.dateSurveyed);
jsonArray.add(jsonObject);
}
我的想法是这样的。
public interface ProfilesApi {
@FormUrlEncoded
@POST("upload_profiles.php")
Call<ResponsePojo> uploadProfiles(
@Body("jsonArrayProfile") JsonArray jsonArray
);
}
我尝试使用@Body 时的错误是“找不到符号方法值()”
当我尝试这个时
public interface ProfilesJsonArray {
@FormUrlEncoded
@POST("upload_profiles.php")
Call<ResponsePojo> uploadProfiles(
@Body(JsonArray jsonArray)
);
}
错误是“预期的错误:')'”
编辑 1:我为这样的 JSONProfiles 添加了一个 Java 类
public class JSONProfiles {
@SerializedName("profResCodePost")
private final String resCode;
@SerializedName("profProfilePost")
private final String profile;
@SerializedName("profNameRespondentPost")
private final String name_respondent;
@SerializedName("profDateSurveyed")
private final String date_of_survey;
}
然后对 POST 方法执行此操作
public interface ProfilesJsonArray {
@Headers({
"Content-type: application/json"
})
@POST("upload_profiles.php")
Call<ResponsePojo> uploadProfiles(
@Body(ArrayList <JSONProfiles> jsonprof);
)
}
仍然无法处理错误“错误:类型的非法开始”
【问题讨论】:
标签: java json android-studio retrofit