Я использую библиотеку Unirest для разбора некоторых JSON. Я получаю от API MAshape. Я новичок в создании HTTP-запросов на Java, и у меня возникли проблемы с пониманием ошибки.Невозможно получить JSON в массив из запроса POST
Функция я сделал это:
public ArrayList<String> httpPost(int year) {
HttpResponse<String> response = null;
try {
response = Unirest.post("https://--------.p.mashape.com/v1/calculate/" + year)
.header("X-Mashape-Key", "--------------------------")
.header("Content-Type", "application/x-www-form-urlencoded")
.header("Accept", "application/json")
//.field("blabla", "blabla")
.field("filing_status", myFS)
.field("pay_periods", myPP)
.field("pay_rate", getGrossPay())
.field("state", myState)
.asString();
} catch (UnirestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// retrieve the parsed JSONObject from the response
JSONObject myObj = new JSONObject(response);
JSONArray results = new JSONArray();
try {
results = myObj.getJSONArray("annual"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ArrayList<String> list = new ArrayList<String>();
if (results != null) {
int len = results.length();
for (int i=0;i<len;i++){
try {
list.add(results.get(i).toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return list;
}
Я получаю ошибку:
org.json.JSONException: JSONObject["annual"] not found
Я выводимый переменную response
в файл, а файл был [email protected]
в нем. Я не знаю, откуда это взялось.
Просто, чтобы проверить, я использовал hurl.it и тот же ответ, который я ставлю в моей программе дает успешный ответ:
{
"annual": {
"state": {
"amount": 68232.65
},
"fica": {
"amount": 91800
},
"federal": {
"amount": 418014.8
}
},
"per_pay_period": {
"state": {
"amount": 5686.05
},
"fica": {
"amount": 7650
},
"federal": {
"amount": 34834.57
}
}
}
Я попытался изменить тип response
от String
к JsonNode
но Ждут» и я действительно не знаю, как с этим работать. Я также добавил все необходимые библиотеки. Любая помощь?
Заменить 'myObj.getJSONArray ("ежегодный"));' 'по myObj.getJSONObect ("ежегодный"));' ' – BNK
JSONObject [ "ежегодный"] не found' я думал, что это будет потому что он был «годовой», был массивом, но это не так. Означает ли это, что проблема с JSON я получаю? Есть скобки на 'годовых' в ошибке, делает ли JSON скобки вокруг массива? – ashraj98