如何在另一个类中添加JSONArray并从中获取值

时间:2016-01-01 13:44:58

标签: android arrays return global-variables jsonobject

我尝试以这种方式将JSONObject添加到JSONArray:

   JSONObject jsonObject = new JSONObject();

   try {
       jsonObject.put("strefa", strefa);
       jsonObject.put("adres", adres);
       jsonObject.put("kryteria", kryteria);
       jsonObject.put("telefon", telefon);
       jsonObject.put("data", data);
   } catch (Exception e) {
       e.printStackTrace();
   }

   GlobalConfig config = new GlobalConfig();
   config.addJSONObject(jsonObject);

以这种方式得到这个JSONArray:

   GlobalConfig config = new GlobalConfig();
   JSONArray jsonArray = config.getJSONArray();

以下是我的GlobalConfig:

   public class GlobalConfig {

   JSONArray JsonArray = new JSONArray();

   public JSONArray getJSONArray() {

       return JsonArray;
   }

   public void addJSONObject(JSONObject jsonObject) {

       JsonArray.put(jsonObject);

   }

出了点问题。例如,我尝试获取此数组的长度,我收到大小0.如何返回JSONArray?

2 个答案:

答案 0 :(得分:0)

这会创建新对象

GlobalConfig config = new GlobalConfig();

结果制作一个新数组.. 试试这个:

GlobalConfig config = new GlobalConfig();
config.addJSONObject(jsonObject);
JSONArray jsonArray = config.getJSONArray();

答案 1 :(得分:0)

所以,忽略整个“对json或不对json”问题,你的问题似乎基本上是“如何创建一个单身人士”..

有很多方法可以实现单例模式,但是从我能理解的情况来看,这两种模式可能最方便:

  1. 使用应用程序对象来保存GlobalConfig对象
  2. 实施“经典”java单例
  3. 两者都有好有坏;我不打算详细介绍如何实现自定义应用程序对象,您可以在此处了解如何执行此操作:Android Application Object

    你可以实现像这样的“经典”java单例:

    public class GlobalConfig {
         private JSONArray JsonArray = new JSONArray();
    
         // This holds our shared instance of GlobalConfig
         private static GlobalConfig staticInstance;
    
         // Declare a private constructor to prevent accidentally using "new GlobalConfig"
         private GlobalConfig() {};
    
         // Use GlobalConfig.getInstance() to get your GlobalConfig
         public static GlobalConfig getInstance() {
           // We create a new instance only on the first use of getInstance
           if (staticInstance == null) {
            staticInstance = new GlobalConfig();
           }
           // Always return the same instance.. singleton!
           return staticInstance;
         }
    
    
       public JSONArray getJSONArray() {
    
           return JsonArray;
       }
    
       public void addJSONObject(JSONObject jsonObject) {
    
           JsonArray.put(jsonObject);
    
       }
    

    因此,无论何时需要访问GlobalConfig对象,请使用

    GlobalConfig config = GlobalConfig.getInstance()
    

    或者如果您愿意,可以执行以下操作:

    JSONArray jsonArray = GlobalConfig.getInstance().getJSONArray();
    

    它的关键是GlobalConfig(单例)的静态实例,它总是由GlobalConfig.getInstance()返回,这使得它可以被任何活动等访问。本质上它是一个全局变量..但是。这也意味着它很难发布,并且可以在dalvik VM的整个生命周期内存在(即使在你的应用程序发布之间;也要注意这一点......)

    希望这有帮助。