Java 使用GSON时添加到JSON的Arraylist值对象

Java 使用GSON时添加到JSON的Arraylist值对象,java,android,json,arraylist,gson,Java,Android,Json,Arraylist,Gson,您好,在我的应用程序中,我正在使用它创建JSON字符串。所以我想用GSON。我有两个函数,一个是存储arraylist,另一个是普通对象。我的问题是ArrayList部分工作正常,但当我打印普通对象函数时,ArrayList对象被添加到json部分,这是我的编码 主类 JsonStructure json = new JsonStructure(); json.messages.add("msg 1"); json.messages

您好,在我的应用程序中,我正在使用它创建JSON字符串。所以我想用GSON。我有两个函数,一个是存储arraylist,另一个是普通对象。我的问题是ArrayList部分工作正常,但当我打印普通对象函数时,ArrayList对象被添加到json部分,这是我的编码

主类

  JsonStructure json = new JsonStructure();

             json.messages.add("msg 1");
                json.messages.add("msg 2");
                json.messages.add("msg 3");

                json.asecs.add("asec 1");
                json.asecs.add("asec 2");
                json.asecs.add("asec 3");

            Gson gson = new Gson();
             output = gson.toJson(json);
            Log.i("gson", output);


            List<JsonStructure> Allergylist = new ArrayList<JsonStructure>();
            for (int i = 0; i < 5; i++) {

                JsonStructure oAllergy_Data = new JsonStructure();

                oAllergy_Data.setIdmember("hi");
                oAllergy_Data.setIduser("hello");

                // Adding register to list
                Allergylist.add(oAllergy_Data);

            }
            Gson newgson = new Gson();
            String  newoutput = newgson.toJson(Allergylist);
            Log.i("gson new", newoutput);
我的输出应该是这样的

gson(21917): {"asecs":["asec 1","asec 2","asec 3"],"messages":["msg 1","msg 2","msg 3"]}
gson new(21917): [{"asecs":[],"idmember":"hi","iduser":"hello","messages":[]},{"asecs":[],"idmember":"hi","iduser":"hello","messages":[]},{"asecs":[],"idmember":"hi","iduser":"hello","messages":[]},{"asecs":[],"idmember":"hi","iduser":"hello","messages":[]},{"asecs":[],"idmember":"hi","iduser":"hello","messages":[]}]
 gson new(21917): [{"idmember":"hi","iduser":"hello"},{"idmember":"hi","iduser":"hello"},{"idmember":"hi","iduser":"hello"},{"idmember":"hi","iduser":"hello"},{"idmember":"hi","iduser":"hello"}]
我的问题是

1) 如果gson将显示类中声明的所有对象,那么为什么idpeople不是display only arraylist将显示在myjson中


2) 如果我需要为Arraylist创建一个单独的对象文件,或者为我的编码创建任何alter编码,无论JsonStructure包含什么,所有这些都将是json的一部分。如果不想将其包含在json中,请将其从类中删除

我个人认为,如果您的json包含任何额外字段,并且该字段对您有用,那么它不会伤害任何人

创建新类-

JsonStructure oAllergy_Data = new JsonStructure();
将允许arraylist成为json的一部分。如果您不希望它包含,请将它与JsonStructure类分开

或者,也可以像这样创建Json-

JSONObject outer = new JSONObject();
        try {
            // field
            outer.put("EMAIL", reqModel.getEmail());
            // field
            outer.put("PASSWORD", reqModel.getPassword());
        } catch (JSONException e) {
            //
        } catch (Exception e) {
            //
        }
        return outer.toString();
删除此行

ArrayList<String> messages = new ArrayList<String>();
    ArrayList<String> asecs = new ArrayList<String>();
ArrayList messages=new ArrayList();
ArrayList asecs=新的ArrayList();
使用

ArrayList消息;
ArrayList asecs;

只有

一切都很顺利。你到底有什么问题?这将包含额外的空间(位)用于传输{“asecs”:[],“idmember”:“hi”,“iduser”:“hello”,“messages”:[]}为此创建一个新类。没有其他更改方法。但是idpeople没有显示在json中,为什么只有arraylist显示在这行OAAllergy_数据上;不,我不想显示idpeople。idpeople也是JsonStructure类的一种对象类型。我的问题是,如果gson将显示类中声明的所有对象,那么为什么idpeople不是display only arraylist将显示到我的json中
ArrayList<String> messages = new ArrayList<String>();
    ArrayList<String> asecs = new ArrayList<String>();
ArrayList<String> messages ;
 ArrayList<String> asecs;