我该如何获取这个json数据

时间:2021-08-08 06:01:04

I can take json object like this :

我可以像这样拿json对象:

{"title":"this i the title", "description":"this is the description"}

{“title”:“this i the title”,“description”:“这是描述”}

or even json array : data[{"title":"ABCD","name":"Peter"}]

甚至是json数组:data [{“title”:“ABCD”,“name”:“Peter”}]

but how can I take :

但我该怎么办:

  {"meta":{"total_rows":1,"uri":"\/profile\/info\/","limit":150,"limit_type":"user",
"requests":2,"reset":3063,"recorded":"2010-12-27 22:48:49"}}

for example I want to take the limit, what should I do ?

例如,我想采取限制,我该怎么办?

This is the class where I can take json data on internet

这是我可以在互联网上获取json数据的类

public class Connection2 {  
    float rating;
String name,air_day,network,air_time,description;

  public Connection2(String url){
        connect_show_info(url);     
    }
    public String returnName(){
        return name;
    }
    private void connect_show_info(String url){  


    // Create the httpclient  
    HttpClient httpclient = new DefaultHttpClient();  

    // Prepare a request object  
    HttpGet httpget = new HttpGet(url);   

    // Execute the request  
    HttpResponse response;  

    // return string  
    String returnString = null;  

    try {  

        // Open the webpage.  
        response = httpclient.execute(httpget);  

        if(response.getStatusLine().getStatusCode() == 200){  
            // Connection was established. Get the content.   

            HttpEntity entity = response.getEntity();  
            // If the response does not enclose an entity, there is no need  
            // to worry about connection release  

            if (entity != null) {  
                // A Simple JSON Response Read  
                InputStream instream = entity.getContent();  

                // Load the requested page converted to a string into a JSONObject.  
                JSONObject json = new JSONObject(convertStreamToString(instream));  

                // Get the query value'  
                String query = json.getString("meta");  

                // Make array of the suggestions
                JSONObject series = json.getJSONObject("series");                    
                // Build the return string.
               // Strings
                air_day = "monday";

                name = series.getString("name");
                //air_day = series.getJSONObject(0).getString("air_day").toString() ;
                //air_time = series.getJSONObject(0).getString("air_time").toString() ;
                //network = series.getJSONObject(0).getString("network").toString();
                //description = series.getJSONObject(0).getString("description").toString();
                // Int

                // Float
                //rating = (float) series.getJSONObject(0).optDouble("rating");


                // Cose the stream.  
                instream.close();  
            }  
        }  
        else {  
            // code here for a response othet than 200.  A response 200 means the webpage was ok  
            // Other codes include 404 - not found, 301 - redirect etc...  
            // Display the response line.  
            returnString = "Unable to load page - " + response.getStatusLine();  
        }  
    }  
    catch (IOException  ex) {  
        // thrown by line 80 - getContent();  
        // Connection was not established  
        returnString = "Connection failed; " + ex.getMessage();  
    }  
    catch (JSONException ex){  
        // JSON errors  
        returnString = "JSON failed; " + ex.getMessage();  
    }  
}

And this is the way I want to take it :

这就是我想要的方式:

Connection2 serie = new Connection2(url);

    name = (TextView)findViewById(R.id.name);
    description = (TextView)findViewById(R.id.description);
    airday = (TextView)findViewById(R.id.air_day);
    airtime = (TextView)findViewById(R.id.air_time);

    name.setText(serie.returnName());
    description.setText(serie.description);

3 个解决方案

#1


1  

Instead of writing lots of monkey code that org.json's low-level JSON parser requires, I would recommend using one of data-binding capable JSON libs, like:

而不是编写org.json的低级JSON解析器所需的大量猴子代码,我建议使用一个支持数据绑定的JSON库,例如:

and define simple POJO structure, like:

并定义简单的POJO结构,如:

public class Response {
  public Meta meta;
}

public class Meta {
  public int total_rows;
  public String uri; // or could be URL or URI
  public int limit;
  public String limit_type; // or an Enum of { user, ... }
  public int requests;
  public int reset;
  public Data recorded;
}

and then use data binding, like:

然后使用数据绑定,如:

// Jackson; Gson uses 'Gson' object
Response response = new ObjectMapper().readValue(json, Response.class);

if you want to build requests (or other JSON), similarly you would just do

如果你想构建请求(或其他JSON),你也可以这样做

byte[] jsonToSend = mapper.writeValueAsBytes(requestObject);

#2


3  

Tsunaze, Depends on which library you are using. The above seems like jObject = getJsonObject("meta").. jObject.getInteger("limit");

Tsunaze,取决于您使用的是哪个图书馆。上面看起来像jObject = getJsonObject(“meta”).. jObject.getInteger(“limit”);

So first get json object corresponding to "meta" and from that json object get value for "limit".

因此,首先获取对应于“meta”的json对象,并从该json对象获取“limit”的值。

  • Lalith
  • Lalith

#3


0  

JSONObject json = new JSONObject(convertStreamToString(instream));  

int limit = json.getJSONObject("meta").getInt("limit"); 

#1


1  

Instead of writing lots of monkey code that org.json's low-level JSON parser requires, I would recommend using one of data-binding capable JSON libs, like:

而不是编写org.json的低级JSON解析器所需的大量猴子代码,我建议使用一个支持数据绑定的JSON库,例如:

and define simple POJO structure, like:

并定义简单的POJO结构,如:

public class Response {
  public Meta meta;
}

public class Meta {
  public int total_rows;
  public String uri; // or could be URL or URI
  public int limit;
  public String limit_type; // or an Enum of { user, ... }
  public int requests;
  public int reset;
  public Data recorded;
}

and then use data binding, like:

然后使用数据绑定,如:

// Jackson; Gson uses 'Gson' object
Response response = new ObjectMapper().readValue(json, Response.class);

if you want to build requests (or other JSON), similarly you would just do

如果你想构建请求(或其他JSON),你也可以这样做

byte[] jsonToSend = mapper.writeValueAsBytes(requestObject);

#2


3  

Tsunaze, Depends on which library you are using. The above seems like jObject = getJsonObject("meta").. jObject.getInteger("limit");

Tsunaze,取决于您使用的是哪个图书馆。上面看起来像jObject = getJsonObject(“meta”).. jObject.getInteger(“limit”);

So first get json object corresponding to "meta" and from that json object get value for "limit".

因此,首先获取对应于“meta”的json对象,并从该json对象获取“limit”的值。

  • Lalith
  • Lalith

#3


0  

JSONObject json = new JSONObject(convertStreamToString(instream));  

int limit = json.getJSONObject("meta").getInt("limit");