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