更快地解析android中的JSON字符串

时间:2014-09-13 10:47:02

标签: java android json parsing

我使用此方法来解析JSON字符串,但它太慢了......有没有更好的方法呢? 感谢

synchronized private void parseCategories(String response){

    try{
        JSONArray categoriesJSONArray = new JSONArray (response);


        // looping through All Contacts
        for(int i = 0; i < categoriesJSONArray.length(); i++){
            JSONObject currentCategory = categoriesJSONArray.getJSONObject(i);

            String label="";
            String categoryId="";


            // Storing each json item in variable
            if(currentCategory.has("label"))
                label = currentCategory.getString("label");


            if(currentCategory.has("id"))
                categoryId = currentCategory.getString("id");

            if(
               label!=null &&
               categoryId!=null
              )
            {
                Category toAdd = new Category(categoryId, label);
                categories.add(toAdd);
            }

        }

        //Alphabetic order
        Collections.sort(
                categories,
                new Comparator<Feed>() {
                    public int compare(Feed lhs, Feed rhs) {
                        return lhs.getTitle().compareTo(rhs.getTitle());
                    }
                }
        );

        Intent intent = new Intent("CategoriesLoaded");
        LocalBroadcastManager.getInstance(mAppContext).sendBroadcast(intent);


    }catch (JSONException e) {
        e.printStackTrace();
    }

}

2 个答案:

答案 0 :(得分:1)

使用GSON库。您可以将对象转换为json字符串,如下例所示:

MyClass MyObject;
Gson gson = new Gson();
String strJson = gson.toJson(MyObject);

答案 1 :(得分:1)

这里尝试使用代码开始。你需要Gson库。

Gson gson=new Gson();
MyBean myBean=gson.fromJson(response);

Note:这里MyBean类包含json字符串中存在的字段,例如: id,以及吸气剂和二传手。其余的由Gson处理。

这是一个快速演示。

import com.google.gson.annotations.SerializedName;

public class Box {

  @SerializedName("id")
  private String categoryId;

  // getter and setter
}

说你JSON看起来如下:

{"id":"A12"}

您可以按如下方式解析它:

class Parse{
 public void parseJson(String response){
  Gson gson=new Gson();
  Box box=gson.fromJson(response,Box.class);
  System.out.println(box.getCategoryId());
 }
}

输出

A12

有关Gson访问here

的更多信息