繁体   English   中英

Java ArrayList转换为Name值对

[英]Java ArrayList into Name value pair

在java类中,我使用arraylist说包含所有报告的列表的报告,其中包含reportid,reportname,reporttype等我想要添加到NameValuePair并将Http postmethod调用发送到特定URL。

我想将arraylists - reportname添加到名称值对(org.apache.commons.httpclient.NameValuePair)中,然后使用http client post方法将名称值对数据提交到特定的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**.)
        };

请建议我如何将报告arraylist reportname添加到NameValuePair的报告字段中。

- 谢谢

@ adarsh我可以使用泛型这样的东西吗?

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

然后添加namevalue对作为

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

对于名称值对,使用地图就像事物......例如。 Hastable(它是同步的),你可以使用不同步的Map的其他实现。

我建议将报表ArrayList序列化为JSON格式的String

new NameValuePair("reports", reportsAsJson)

您可以使用任何JSON序列化库(如http://json.org/java/上的那个)构建reportsAsJson变量。 它将具有近似这种格式:

reportsAsJson = "[{reportid:'1',reportname:'First Report',reporttype:'Type 1'}, {reportid:'2',reportname:'Seond Report',reporttype:'Type 2'}]";

好吧,你做不到。 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM