我尝试以这种方式将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?
答案 0 :(得分:0)
这会创建新对象
GlobalConfig config = new GlobalConfig();
结果制作一个新数组.. 试试这个:
GlobalConfig config = new GlobalConfig();
config.addJSONObject(jsonObject);
JSONArray jsonArray = config.getJSONArray();
答案 1 :(得分:0)
所以,忽略整个“对json或不对json”问题,你的问题似乎基本上是“如何创建一个单身人士”..
有很多方法可以实现单例模式,但是从我能理解的情况来看,这两种模式可能最方便:
两者都有好有坏;我不打算详细介绍如何实现自定义应用程序对象,您可以在此处了解如何执行此操作: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的整个生命周期内存在(即使在你的应用程序发布之间;也要注意这一点......)
希望这有帮助。