如何仅将一些选定的 Json 数组和 Json 对象从 Url 解析到 android 设备
Posted
技术标签:
【中文标题】如何仅将一些选定的 Json 数组和 Json 对象从 Url 解析到 android 设备【英文标题】:How to Parse only some selected Json arrays and Json Objects from a Url to android device 【发布时间】:2013-12-10 11:14:40 【问题描述】:我有一个 Json 数据,其中包含多个 JSON 数组和 JSON 对象,所以我想在 android 活动中解析其中的一些,...
here处的 JSON 数组和 Json 对象示例
所以我想在 android 设备中调用它们中的一些...... 我知道如何解析,但我只想要一些内容,..
我有类似的数据
"process":"done"
"one":1
"List":
"Something": [
"Name": "John",
"phone": "test"
]
"details":"ok"
"two":2
"SomethingElse": [
"Name": "Smith",
"phone": "test"
]
就像我有一个 Restful 服务,它有很多数据,.. 所以如果想调用“list”或“SomethingElse”jsonObjecs/arrays..它不会在开始时调用它,..
【问题讨论】:
【参考方案1】:您可以考虑以 SAX 方式解析数据,只需遍历您的节点,如果您需要解析它,则跳过它并继续。看看here,JSONReader 是要走的路。
【讨论】:
感谢您的回答先生,...但是Restful 服务不是从xml 设计的,.. 它是为JSON 对象和Json 数组设计的,...所以我想称它们就是这样, ..但我希望我需要调用任何 JSON 数组或任何 JSON 对象,.. 用于 Url,,,并且需要解析,.. 并且图像也在那里,谢谢,.. 我也指向 JSON,也许我在说“节点”时使用了错误的术语。查看示例和 JSONReader 类。 k 先生,...它来自 URL,..如果是,请提供更多链接,...或在 android 中的示例,.. 只是为了确保我得到正确的问题,您的 json 数据是根据 url 请求检索的,对吗?这意味着您将收到包含 json 数据的流的响应。您可以使用 JSONReader 轻松解析该流;如果我弄错了,请给我详细信息以正确理解您的问题。 是的,先生。它来自一个 Restful 服务,...我正在将该数据解析到 android ,..所以我使用了这个链接,..developer-android-tutorial.blogspot.in/2013/07/… 从 url 获取数据,所以他使用了 worldpopulation ,..如果我使用列表或其他东西在那个地方它出错了,...请帮帮我先生,..【参考方案2】:您的上述响应的Json Array 将是这样的
JSONObject JObject = new JSONObject(response);
String Process = JObject.getstring("process");
String one= JObject.getstring("one");
JSONObject Listobject= JObject.getjsonobject("List");
JsonArray something =Listobject.getjsonarray("Something");
for(int i = 0 ; i < something.length(); i++)
JsonObject somethingobject =something.getjsonobject(i);
String name=somethingobject.getstring("Name");
String phone=somethingobject.getstring("phone");
String details= JObject.getstring("details");
String two= JObject.getstring("two");
JsonArray SomethingElse=JObject.getjsonarray("SomethingElse");
for(int j = 0 ; j < SomethingElse.length(); j++)
JsonObject SomethingElseobject =SomethingElse.getjsonobject(j);
String name1=SomethingElseobject .getstring("Name");
String phone1=SomethingElseobject .getstring("phone");
从服务器获取数据的代码
public void run()
Log.i("run method", "calling run method");
try
if (method == HttpMethodType.GET)
response(executeHttpGet());
else
response(executeHttpPost());
catch (ConnectTimeoutException ex)
exception("Please retry after sometime...");
catch (UnknownHostException e)
exception("Server might be down...");
catch (IOException e)
exception("Please check your internet connectivity...");
catch (Exception e)
exception(e.getMessage());
Log.i(tag, "Http Call Finish");
private void response(String response)
if (resListener != null)
resListener.handleResponse(response);
private void exception(String exception)
if (excepListener != null)
excepListener.handleException(exception);
public String executeHttpGet() throws Exception
Log.i("calling method", "calling execute");
Log.i("path in method", path);
BufferedReader in = null;
String page = null;
try
HttpGet request = new HttpGet(path);
HttpResponse response = client.execute(request,localContext);
Log.i("======", response.toString());
in = new BufferedReader(new InputStreamReader(response.getEntity()
.getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
while ((line = in.readLine()) != null)
Log.i("the response is ::", line);
sb.append(line);
in.close();
page = sb.toString();
finally
if (in != null)
try
in.close();
catch (IOException e)
e.printStackTrace();
return page;
【讨论】:
你好 Ravneet 先生,...我需要从一个 Restful 服务调用这个,我的意思是从一个 URL 一旦检查此链接 developer-android-tutorial.blogspot.in/2013/07/… 我如何访问上述数据,如果它来自网址以上是关于如何仅将一些选定的 Json 数组和 Json 对象从 Url 解析到 android 设备的主要内容,如果未能解决你的问题,请参考以下文章
如何通过点击按钮将选定的 JSON 数据值从 uitableview 发送到服务器
如何仅将 JSON 请求正文的几个字段从 DTO 发布到 URL 春季启动