我有这段代码来检索数据库中的值:
if(json != null){
try{
result = json.getJSONArray("monthly");
if(!result.toString().equals("[]")) {
for (int i = 0; i < result.length(); i++) {
JSONObject source = result.getJSONObject(i);
String month = source.getString("month");
String counted = source.getString("counted");
Toast.makeText(getActivity(), month, Toast.LENGTH_SHORT).show();
}
注意
String month = source.getString(&#34; month&#34;);
快速返回刚刚在2秒左右后加载的值。但是当我尝试使用此代码将该值解析为整数时:
int month = Integer.parseInt(source.getString(&#34; month&#34;));
完成需要很长时间。那么我要问的是你如何正确地将该数据解析为整数?
编辑: JSON
{&#34;每月&#34;:[{&#34;一个月&#34;:&#34; 2&#34;&#34;计数&#34;:&#34; 1&#34; },{&#34;一个月&#34;:&#34; 3&#34;&#34;计数&#34;:&#34; 1&#34;},{&#34;一个月&#34 ;: #&34; 4&#34;&#34;计数&#34;:&#34; 1&#34;},{&#34;一个月&#34;:&#34; 5&#34;&#34 ;计数&#34;:&#34; 5&#34;},{&#34;一个月&#34;:&#34; 6&#34;&#34;计数&#34;:&#34; 2&# 34;},{&#34;一个月&#34;:&#34; 7&#34;&#34;计数&#34;:&#34; 3&#34;},{&#34;一个月&#34 ;:&#34; 8&#34;&#34;计数&#34;:&#34; 1&#34;},{&#34;一个月&#34;:&#34; 9&#34;,& #34;计数&#34;:&#34; 2&#34;},{&#34;一个月&#34;:&#34; 10&#34;&#34;计数&#34;:&#34; 1&#34;},{&#34;一个月&#34;:&#34; 11&#34;&#34;计数&#34;:&#34; 3&#34;},{&#34;一个月& #34;:&#34; 12&#34;&#34;计数&#34;:&#34; 2&#34;}]}
答案 0 :(得分:0)
您可以在JSONObject上使用getInt:
source.getInt("month")
性能始终是一个问题,但是在解析数据时会根据大小产生相当大的影响。如果您尝试在UI线程上执行此操作,则不应该这样做。而是使用一些后台线程。 AsyncTask是Android在后台线程上运行代码的特定方式,然后将结果传递回UI线程。
编辑:
这是我的代码,并且使用getString与getInt没有显着的性能影响,因此代码中的其他地方一定存在问题。
try {
JSONObject json =
new JSONObject("{'monthly':[{'month':'2','counted':'1'},{'month':'3','counted':'1'},{'month':'4','counted':'1'},{'month':'5','counted':'5'},{'month':'6','counted':'2'},{'month':'7','counted':'3'},{'month':'8','counted':'1'},{'month':'9','counted':'2'},{'month':'10','counted':'1'},{'month':'11','counted':'3'},{'month':'12','counted':'2'}]}");
JSONArray result = json.getJSONArray("monthly");
for (int i = 0; i < result.length(); i++) {
JSONObject source = result.getJSONObject(i);
int month = source.getInt("month");
String counted = source.getString("counted");
Toast.makeText(this,
"" + month,
Toast.LENGTH_SHORT)
.show();
}
} catch (JSONException e) {
e.printStackTrace();
}