2016-04-06 24 views
2

我试图通过改造2后,坐标,例如:改造后第2多部分的Json与名

NAME = “缘”{ “日期”: “2016年3月28日十八时15分22秒”, “LAT”:65.9667, “长”: - 18.5333}

你能帮助我请。我有, 型号:

public class LocationCoordinatesEntity{ 

@SerializedName("long") 
@Expose 
private Double longitude; 

@SerializedName("lat") 
@Expose 
private Double latitude; 

@SerializedName("date") 
@Expose 
private Date date; 

public Double getLongitude() { 
    return longitude; 
} 

public void setLongitude(Double longitude) { 
    this.longitude = longitude; 
} 

public Double getLatitude() { 
    return latitude; 
} 

public void setLatitude(Double latitude) { 
    this.latitude = latitude; 
} 

public Date getDate() { 
    return date; 
} 

public void setDate(Date date) { 
    this.date = date; 
} 

public LocationCoordinatesEntity(Double longitude, Double latitude, Long date){ 
    this.latitude = latitude; 
    this.longitude = longitude; 
    this.date = new Date(date); 
} } 

@Multipart 
@POST("setgeojson") 
Observable<Void> setgeoMultipart(@Part("geo") String geo); 

Observable<Void> sendMultipartObservable = apiInterface.setgeoMultipart(gson.toJson(coordinatesEntity)); 

当我tieng张贴此我得到一个错误:

java.lang.IllegalStateException: JSON must start with an array or an object. 
+0

为什么你使用'multipart'是什么目的? –

回答

0

你是试图发布字符串instea d的json对象。

更改此:

apiInterface.setgeoMultipart(coordinatesEntity); 

而改变这一点:

@Multipart 
@POST("setgeojson") 
Observable<Void> setgeoMultipart(@Part("geo") LocationCoordinatesEntity geo); 
+0

@身体参数不能用于窗体或多部分编码。 在这种情况下,我将只Json的无键“地缘” – Alex

+0

我的坏,尝试'setgeoMultipart(@part(“地理”)LocationCoordinatesEntity GEO)' – Exaqt

+0

谢谢,这个工作,但如果我需要发送的名单是什么coordinateEntity的方式相同吗? – Alex

0

另一个窍门是要做到这一点(这将2个JSON对象合并成1时改造将完成HTTP POST):

HashMap<String, Object> map = new HashMap<>(); 
map.put("obj1name", someObject1); 
map.put("obj2name", someObject2); 
somePostCall(map); 

而接口调用应该看起来像:

@POST("some/url/to/post") 
Call<SomeType> somePostCall(
     @Body HashMap combinedObject 
);