如何仅将一些选定的 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 元素插入 SQL 字段

如何通过点击按钮将选定的 JSON 数据值从 uitableview 发送到服务器

如何仅将 JSON 请求正文的几个字段从 DTO 发布到 URL 春季启动

如何仅将选定的行从handsontable导出到csv

Charles:仅将请求正文导出为单独的 JSON 文件 [关闭]

如何屏蔽 json 字段中的选定值 - Postgresql 9.3 和 PDI