我有一个从Web服务读取JSON的功能:
public String readJSONFeed(String URL, String userName, String password){
...
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("userName", userName));
params.add(new BasicNameValuePair("password", password));
...
}
我从AsyncTask中调用它:
EditText userName = (EditText)findViewById(R.id.txtUserName);
EditText password = (EditText)findViewById(R.id.passWord);
return readJSONFeed("http://service.com/service.php", userName.getText().toString(), password.getText().toString());
我的问题是如何使readJsonFeed成为通用的,并将数组解析为名称值对。
答案 0 :(得分:0)
您可以尝试使用String ... params然后使用params [0],params [1]等获取值。这会使事情变得复杂,因为您需要param的名称和值,但是总是可以在将params发送到方法时输入名称,这样的值,并确保params总是成对出现。
例如:
public String readJSONFeed(String ... params){
if (params.lenght % 2 != 0) return null;
List<NameValuePair> params = new ArrayList<NameValuePair>(params.lenght / 2);
for (int i = 0; i < params.lenght - 1; i += 2) {
params.add(new BasicNameValuePair(params[i], params[i + 1]));
}
//calling
readJSONFeed(name1, value1, name2, value2, name3, value3); etc