Android中用于提取布尔值/整数值的JSON解析

Android中用于提取布尔值/整数值的JSON解析,android,json,flickr,Android,Json,Flickr,我是JSON新手,我想知道如何提取一些信息并将其放入JSON对象中,然后读取一些值。json信息如下所示 { "photos":{ "page":1, "pages":1802, "perpage":100, "total":"180134", "photo": [ { "id":"8711964781", "

我是JSON新手,我想知道如何提取一些信息并将其放入JSON对象中,然后读取一些值。json信息如下所示

{
    "photos":{
        "page":1, 
        "pages":1802,
         "perpage":100,
         "total":"180134", 
         "photo": [
            {
                "id":"8711964781", 
                "owner":"21156896@N07", 
                "secret":"3e24e45977", 
                "server":"8553", 
                "farm":9, 
                "title":"Old Harbor", 
                "ispublic":1, 
                "isfriend":0, 
                "isfamily":0
            }, 
            {
                "id":"8712680696", 
                "owner":"21156896@N07", 
                "secret":"fe82f8387b", 
                "server":"8122", 
                "farm":9, 
                "title":"Rockefeller Plaza", 
                "ispublic":1, 
                "isfriend":0, 
                "isfamily":0
            }, 
            ....
它会持续很长一段时间。如何获得“isPublic”的值?“Secret”是字符串,因为“”和isPublic是整数还是布尔值?我基本上要把它们放进一个URL链接,然后下载图片

public class ReadString extends AsyncTask<String, Integer, String>{
@Override
        protected String doInBackground(String... FlickrString) {
            try {
                json = getValue();
                return json.getString(FlickrString[0]);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
@Override
        protected void onPostExecute(String result) {
            // TODO Auto-generated method stub
            tvTest.setText(result);
        }   
public类ReadString扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…FlickrString){
试一试{
json=getValue();
返回json.getString(FlickrString[0]);
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
tvTest.setText(结果);
}   
这适用于所有字符串。如何将farm、isfriend、isfamily和ispublic转换为字符串?我现在尝试了其他方法来获取Int值,我创建了一个全新的类来读取Int值。但是它没有得到正确的Int值。我让它下载Int并将其转换为字符串,然后将textview更改为使用string.valueOf(x)的int字符串;我做错了什么

public class ReadInt extends AsyncTask<String, Integer, String>{

        @Override
        protected String doInBackground(String... FlickrString) {
            try {
                json = getValue();
                int x = json.getInt(FlickrString[0]);
                String y = String.valueOf(x);
                return y;
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            // TODO Auto-generated method stub
            tvTest.setText(result);
        }   
    }   
公共类ReadInt扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…FlickrString){
试一试{
json=getValue();
intx=json.getInt(FlickrString[0]);
字符串y=String.valueOf(x);
返回y;
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
tvTest.setText(结果);
}   
}   

谢谢!< /P> < P> java不是C++的。C++ 0是假的,其他整数是真的< /P> 我认为你应该创建一个这样的函数

private void boolean convertIntToBool(int value) {
   if(value==0) {
     return false;
   } else {
     return true;
   }
}
并在JSON解析中使用它,例如

boolean isfamily = convertIntToBool(jsonPhotoObject.getInt("isfamily"));

P> C++,在C++ 0中是错误的,其他整数是真的< /P> 我认为你应该创建一个这样的函数

private void boolean convertIntToBool(int value) {
   if(value==0) {
     return false;
   } else {
     return true;
   }
}
并在JSON解析中使用它,例如

boolean isfamily = convertIntToBool(jsonPhotoObject.getInt("isfamily"));

我想你已经知道JSON解析,所以我不会给出太多的例子,但是如果你对我的答案还有其他问题,请在评论中提问:)

我们假设 jsonString是您的json结果。您可以通过以下方式获取您的值:

 protected String doInBackground(String... FlickrString) {
            try {
                JSONObject result = new JSONBOject(jsonString);
                JSONObject photots = (JSONObject)result.get("photos");
                JSONArray photosArray = (JSONArray) result.get("photo");
                for(int i = 0; i < photosArray.length(); i++) {
                   JSONObject item = potosArray.get(i);
                   //ispublic
                   int ispublic = item.getInt("ispublic");
                   //isfriend
                   int isfriend = item.getInt("isfriend");
                   //isfamily
                   int isfamily = item.getInt("isfamily");
                }
                json = getValue();
                return json.getString(FlickrString[0]);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
protectedstring doInBackground(String…FlickrString){
试一试{
JSONObject结果=新的JSONBOject(jsonString);
JSONObject photots=(JSONObject)result.get(“照片”);
JSONArray photosaray=(JSONArray)result.get(“photo”);
对于(int i=0;i
我们假设 jsonString是您的json结果。您可以通过以下方式获取您的值:

 protected String doInBackground(String... FlickrString) {
            try {
                JSONObject result = new JSONBOject(jsonString);
                JSONObject photots = (JSONObject)result.get("photos");
                JSONArray photosArray = (JSONArray) result.get("photo");
                for(int i = 0; i < photosArray.length(); i++) {
                   JSONObject item = potosArray.get(i);
                   //ispublic
                   int ispublic = item.getInt("ispublic");
                   //isfriend
                   int isfriend = item.getInt("isfriend");
                   //isfamily
                   int isfamily = item.getInt("isfamily");
                }
                json = getValue();
                return json.getString(FlickrString[0]);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
protectedstring doInBackground(String…FlickrString){
试一试{
JSONObject结果=新的JSONBOject(jsonString);
JSONObject photots=(JSONObject)result.get(“照片”);
JSONArray photosaray=(JSONArray)result.get(“photo”);
对于(int i=0;i