gpt4 book ai didi

java - json解析函数返回奇怪的包名

转载 作者:行者123 更新时间:2023-12-01 14:15:21 25 4
gpt4 key购买 nike

我制作了一个返回字符串的 JSON 解析类。当我将 TextView 的文本设置为字符串时,它会打印“com.test.app.JSONParser@41eddbf8”

出了什么问题?

这是解析类

import android.os.AsyncTask;
import android.util.Log;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
* Created by Vaibhav on 8/9/13.
*/
public class JSONParser extends AsyncTask<String, Void, String>{
protected String doInBackground(String... url) {
DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpGet httpget = new HttpGet(url[0]);
//httppost.setHeader("Content-type", "application/json");

InputStream inputStream = null;
String result;
try {
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();

inputStream = entity.getContent();
// json is UTF-8 by default
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();

String line;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
result = sb.toString();
return result;
} catch (Exception e) {
Log.d("com.test.app.JSONParser", "JSON ERROR:" + e.toString());
return null;
}
finally {
try{if(inputStream != null)inputStream.close();}catch(Exception squish){}
}
}
}

我将该函数称为

String jsonString = new JSONParser().execute(jsonURL).toString();

我不知道为什么我得到了奇怪的回应。谢谢

编辑:

因此,由于我想要 fragment 中的输出,所以我最终使用了

How to get the result of OnPostExecute() to main activity because AsyncTask is a separate class?

将 json 字符串返回到调用 fragment ,以便我可以从那里对其进行操作。

编辑2:

天啊!!太容易了。我在这上面浪费了很多时间!因此,对于遇到此问题的其他人,您所需要做的就是在调用末尾添加 .get() 。

所以:String jsonString = new JSONParser().execute(jsonURL).get();是我的电话,它起作用了!我什至不需要在我的异步任务中使用 onPostExecute block 。

最佳答案

当您调用execute 时,doInBackground 方法不会返回其结果,而是将结果传递给onPostExecute 方法。您似乎错误地使用了 AsyncTask。通常,您会在需要主线程的 onPostExecute 中对结果执行一些操作。

您看到的是 JSONParser 类上的 toString 输出,因为 AsyncTask 将返回 this当你调用execute时。

关于java - json解析函数返回奇怪的包名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18157577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com