Java ArrayList в пару имя-значение - PullRequest
0 голосов
/ 05 января 2012

В java-классе я использую arraylist, скажем, отчеты, содержащие список всех отчетов, у которых есть reportid, reportname, reporttype и т. Д., Которые я хочу добавить в NameValuePair и отправить вызов postmethod Http на конкретный URL.1002 * Я хочу добавить arraylists - reportname в пару «имя-значение» (org.apache.commons.httpclient.NameValuePair), а затем использовать метод post-клиента http, чтобы отправить данные пары «имя-значение» в определенный URL-адрес.* Вот моя пара имя-значение

if (validateRequest()) {
        NameValuePair[] data = {
            new NameValuePair("first_name", firstName),
            new NameValuePair("last_name", lastName),
            new NameValuePair("email", mvrUser.getEmail()),
            new NameValuePair("organization", mvrUser.getOrganization()),
            new NameValuePair("phone", mvrUser.getPhone()),
            new NameValuePair("website", mvrUser.getWebsite()),
            new NameValuePair("city", mvrUser.getCity()),
            new NameValuePair("state", mvrUser.getState()),
            new NameValuePair("country", mvrUser.getCountry()),
            new NameValuePair(**"report(s)", reports**.)
        };

, пожалуйста, предложите мне, как добавить имя отчета массива отчетов в поле отчетов NameValuePair.

- спасибо

@ adarsh ​​canЯ использую с дженериками что-то вроде этого?

reportname = "";
for (GSReport report : reports) {
        reportname = reportname + report.getReportName();
        reportname += ",";
    }

, а затем добавляю пару namevalue как

new NameValuePair("report(s)", reportname)

Ответы [ 3 ]

1 голос
/ 05 января 2012

Я предлагаю сериализовать ваши отчеты ArrayList в формат JSON String.

new NameValuePair("reports", reportsAsJson)

Вы можете создать переменную reportsAsJson, используя любую из библиотек сериализации JSON (например, библиотеку ).http://json.org/java/). Он будет приблизительно иметь следующий формат:

reportsAsJson = "[{reportid:'1',reportname:'First Report',reporttype:'Type 1'}, {reportid:'2',reportname:'Seond Report',reporttype:'Type 2'}]";
1 голос
/ 05 января 2012

для пары имя-значение используйте карту как вещи ... например. Hastable (это синхронизировано), вы можете использовать другие реализация карты, которые не синхронизированы.

0 голосов
/ 05 января 2012

Ну, вы не можете этого сделать.NameValuePair принимает String аргументы в конструкторе.Это имеет смысл, поскольку используется для HTTP POST.

Что вы можете сделать, так это придумать способ сериализации объекта Report в String и отправить эту строку в качестве строкового параметра.Возможно, один из способов сделать это - разграничить параметры класса Report.

reports=reportName1|reportName2|reportName3

Предполагая, что reports является вашим ArrayList,

String reportsStr = "";

for(int i = 0; i < reports.size(); i++) {
    reportStr += reportName;
    if(i != reports.size() - 1) {
        reportsStr += "|";
    }
}

NameValuePair nvPair = new NameValuePair("reports", reportsStr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...