2016-04-06 40 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 
);