java如何将Json解析为另一个活动
我有3个活动需要Json来显示数据,第二个活动根据其ID从主活动获取值,我需要将Json传递给其中的每一个活动,以便它可以接收数据,我如何通过intent将其传递给另一个活动?我对安卓开发非常陌生,我读过一些与本案例相关的问题,但我不太理解
public void updateList() {
feedListView= (ListView) findViewById(R.id.custom_list);
feedListView.setVisibility(View.VISIBLE);
progressbar.setVisibility(View.GONE);
feedListView.setAdapter(new CustomListAdapter(this, feedList));
feedListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
TextView clienteId = (TextView) v.findViewById(R.id.clienteId);
System.out.println("Clicou " + clienteId.getText());
int idCliente = Integer.valueOf(String.valueOf(clienteId.getText()));
for(int x=0; x<feedList.size(); x++) {
if(feedList.get(x).getId_rm() == idCliente) {
ArrayList<ClientesContatosModel> contatosDoCliente = new ArrayList<ClientesContatosModel>();
System.out.println(feedList.get(x).getNome() + " tem " + feedList.get(x).getContatos().size() + " contatos");
if(feedList.get(x).getContatos().size() > 0) {
System.out.println("Valor de x " + x);
for(int y=0; y<feedList.get(x).getContatos().size(); y++) {
ClientesContatosModel mClientesContatosModel = new ClientesContatosModel();
mClientesContatosModel.setNomeContato(feedList.get(x).getContatos().get(y).getNomeContato() );
mClientesContatosModel.setCargo(feedList.get(x).getContatos().get(y).getCargo());
contatosDoCliente.add(mClientesContatosModel);
}
}
Intent intent = new Intent(FeedListActivity.this, FeedDetailsActivity.class);
intent.putExtra("data", contatosDoCliente);
startActivity(intent);
}
}
}
});
}
解析Json:
public void parseJson(JSONObject json) throws JSONException {
try {
JSONArray dados = json.getJSONArray("dados");
feedList = new ArrayList<ClientesModel>();
// parsing json object
for (int i = 0; i < dados.length(); i++) {
JSONObject item = dados.getJSONObject(i);
ClientesModel mClientesModel = new ClientesModel();
mClientesModel.setId_rm(item.optInt("id"));
mClientesModel.setNome(item.optString("nome"));
mClientesModel.setTipo_pessoa(item.optString("tipo_pessoa"));
mClientesModel.setInformacoes_adicionais(item.optString("informacoes_adicionais"));
mClientesModel.setCpf(item.optString("cpf"));
mClientesModel.setCnpj(item.optString("cnpj"));
feedList.add(mClientesModel);
JSONArray contatos = item.getJSONArray("contatos");
if (contatos != null) {
contatoList = new ArrayList<ClientesContatosModel>();
for (int j = 0; j < contatos.length(); j++) {
JSONObject data = contatos.getJSONObject(j);
ClientesContatosModel mClientesContatoModel = new ClientesContatosModel();
mClientesContatoModel.setId_rm(data.optInt("id_rm_cliente"));
mClientesContatoModel.setNomeContato(data.optString("nome"));
mClientesContatoModel.setCargo(data.optString("cargo"));
contatoList.add(mClientesContatoModel);
JSONArray telefone = data.getJSONArray("telefones");
if (telefone != null) {
telefoneList = new ArrayList<ContatosTelefoneModel>();
for (int k = 0; k < telefone.length(); k++) {
JSONObject tel = telefone.getJSONObject(k);
ContatosTelefoneModel mContatosTelefoneModel = new ContatosTelefoneModel();
mContatosTelefoneModel.setId_rm(tel.optInt("id_rm_telefone"));
mContatosTelefoneModel.setNumero(tel.optString("numero"));
mContatosTelefoneModel.setTipo(tel.optString("tipo"));
telefoneList.add(mContatosTelefoneModel);
}
}
mClientesModel.setContatos(contatoList);
mClientesContatoModel.setTelefone(telefoneList);
System.out.println(mClientesContatoModel);
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
我想做的是:
intent.putExtra("json", (java.io.Serializable) new JSONArray().toString());
在我的第二项活动中:
Bundle parametros = getIntent().getExtras();
String jsonArray = parametros.getString("json");
try {
JSONArray array = new JSONArray(jsonArray);
System.out.println("json array " + array.toString(2));
} catch (JSONException e) {
e.printStackTrace();
}
如何从主json获取“Telefone”,并在第二个活动中传递它
# 1 楼答案
步骤1:
使用此代码发出HTTP请求(用于url中的
url
传递)然后使用此选项获取您的数据:
输出::
String url
包含您正在搜索的数据注意:
url
,您必须传递您试图从中删除的url 获取JSON响应Asynchronous task
中,否则它会被删除 崩溃,因为您正在发出网络请求步骤2:<例如:来自活动1>
在意图的帮助下,将
telefone
传递到一个新的活动中步骤3:<例如:来自活动2>
接收在另一个活动中传递的字符串
希望这有帮助!如果有任何错误,请返回
# 2 楼答案
您可以尝试创建单个对象来存储JSON响应,而不是通过意图传递值,然后从活动中引用此对象:
现在,您可以从任何活动中引用此对象
我希望这有帮助