Я пытаюсь отправить объект JSON, который содержит массив JSON с объектами JSON внутри через HTTP POST-параметры.Отправка JSON в качестве параметра HTTP POST (Android/Java)
Формат параметра (то, что ожидает, что сервер) это что-то вроде:
{""team"":[
{""teamid"":""179228"",""position"":1},
{""teamid"":""218036"",""position"":2},
{""teamid"":""88109"",""position"":3},
{""teamid"":""88111"",""position"":4},
{""teamid"":""165536"",""position"":5},
{""teamid"":""224645"",""position"":6}
]}
тем не менее, то, что отправляется в:
{"team":"[
\"{\\\"position\\\":0,\\\"teamid\\\":\\\"88107\\\"}\",\"{\\\"position\\\":1,\\\"teamid\\\":\\\"88109\\\"}\",\"{\\\"position\\\":2,\\\"teamid\\\":\\\"156714\\\"}\",\"{\\\"position\\\":3,\\\"teamid\\\":\\\"138877\\\"}\",\"{\\\"position\\\":4,\\\"teamid\\\":\\\"168730\\\"}\",\"{\\\"position\\\":5,\\\"teamid\\\":\\\"88110\\\"}\",\"{\\\"position\\\":6,\\\"teamid\\\":\\\"88111\\\"}\",\"{\\\"position\\\":7,\\\"teamid\\\":\\\"134431\\\"}\",\"{\\\"position\\\":8,\\\"teamid\\\":\\\"88112\\\"}\",\"{\\\"position\\\":9,\\\"teamid\\\":\\\"138507\\\"}\",\"{\\\"position\\\":10,\\\"teamid\\\":\\\"138880\\\"}\",\"{\\\"position\\\":11,\\\"teamid\\\":\\\"138881\\\"}\",\"{\\\"position\\\":12,\\\"teamid\\\":\\\"151465\\\"}\",\"{\\\"position\\\":13,\\\"teamid\\\":\\\"151464\\\"}\
"]"}
Как я построить этот объект JSON является следующее :
JSONArray teamArray = new JSONArray();
JSONObject jsonRoot = new JSONObject();
for (int i = 0; i < mTeams.size(); i++) {
String teamId = null;
BaseModel data = mTeams.get(i);
if (data != null && data instanceof TeamModel) {
teamId = ((TeamModel) data).getId();
}
JSONObject teamObject = new JSONObject();
try {
teamObject.put(
getResources().getString(
R.string.sendResortedTeamsPosition), i);
teamObject.put(
getResources().getString(
R.string.sendResortedTeamsTeamId), teamId);
teamArray.put(teamObject);
} catch (NotFoundException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
try {
jsonRoot.put("team", teamArray);
mNameValuePairs.put("teams", jsonRoot);
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
В последней, но одна линия (jsonRoot.put("team", teamArray);
) имеет тот же формат как то, что отправляется в последней строке, но с одним менее \
, поэтому один раз «разбор» явно.
Часть моего HTTP код:
String postBody = json.toString();
Log.d("HTTPHelper", "posting JSON: " + postBody);
((HttpPost) httpRequest).setEntity(new StringEntity(postBody));
Почему это происходит? Это Java? Любые идеи, как я могу построить правильный JSON? или любая работа вокруг?
Большое спасибо!
мы можем видеть конец кода. Кроме того, как ваши данные в файле strings.xml? (вы не должны добавлять никаких символов \ или "). Кроме того, возможно, у вас есть опечатки на ожидаемой стороне сервера JSON: двойная двойная кавычка неверна :) – mithrop
@mithrop проблема в том, что в iOS это работает отлично , но в Android у меня много проблем, поэтому проблема не должна быть на стороне сервера ... BTW Я только что добавил последнюю часть кода - просто пару высказываний 'catch' – noloman
нормально. ответьте на данные в файле strings.xml? – mithrop