在搜索了一些现有的JSON库之后,我终于得到了这两个:
我对GSON有点偏爱,但网上的消息是GSon遇到了某种天体性能问题(截至2009年9月).
我继续比较; 与此同时,我正在寻求帮助来决定我的想法.
我是完美主义者类型,我已经使用Google Places API处理网络API调用(仅作为示例),但我觉得它有时很慢或者说我做得不对.有些博客说我应该使用AndroidHttpClient,但我不是,不是吗?
Web API调用我正在使用return json并且我不在UI线程上运行它们,因此使用AsyncTask(AsyncTask是在后台线程上运行的最有效方式,还是我应该使用其他东西?)
请查看我的代码并告诉我它无论如何都会更有效率
public static class NearbySearchRequest extends AsyncTask<String, Void, JSONObject>
{
Exception mException = null;
@Override
protected void onPreExecute()
{
super.onPreExecute();
this.mException = null;
}
@Override
protected JSONObject doInBackground(String... params)
{
StringBuilder urlString = new StringBuilder();
urlString.append("https://maps.googleapis.com/maps/api/place/nearbysearch/json?");
urlString.append("key=").append(Constants.GOOGLE_SIMPLE_API_KEY);
urlString.append("&location=").append(params[0]);
urlString.append("&sensor=").append("true");
urlString.append("&language=").append("en-GB");
urlString.append("&name=").append(params[1]);
urlString.append("&rankby=").append("distance");
LogHelper.Log(urlString.toString());
HttpURLConnection urlConnection = null;
URL url = null;
JSONObject object = null;
try
{
url = new URL(urlString.toString());
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();
InputStream inStream = null;
inStream …Run Code Online (Sandbox Code Playgroud) 我知道Android有一个JSON解析器,但我想知道是否值得使用提供更好性能的东西(比如杰克逊 - 请参阅http://jackson.codehaus.org/)?有人试过吗?
我有9 MB的txt文件,里面有json对象.我需要解析使用gson流,我已经完成了
AssetManager assetManager = activity.getAssets();
InputStream inputStream;
inputStream = assetManager.open(fileName);
JsonReader reader = new JsonReader(new InputStreamReader(inputStream,
"UTF-8"));
JsonElement json = new JsonParser().parse(reader);
JsonArray array = json.getAsJsonArray();
Gson gson = new Gson();
String interationString;
for (JsonElement jsonElement : array) {
interationString = jsonElement.getAsJsonObject().get("drug")
.toString();
Log.d("drug", interationString);
Drug drug = gson.fromJson(interationString, Drug.class);
Log.d("drug", "" + drug);
DatabaseManager.getInstance().saveDrug(drug);
}Run Code Online (Sandbox Code Playgroud)
我把json文件放在assest中.但是在使用4.0的设备上工作,但在模拟器2.3中,它无法工作并显示日志
05-29 11:19:41.290: D/dalvikvm(164): GC_EXPLICIT freed 74K, 46% free 3344K/6151K, external 1323K/1554K, paused 84ms
05-29 11:19:46.330: D/dalvikvm(373): GC_EXPLICIT freed 2K, 51% free 2718K/5511K, …Run Code Online (Sandbox Code Playgroud)