使用GSON时,Arraylist Value对象添加到JSON中

时间:2014-02-26 12:24:44

标签: java android json arraylist gson

您好我在我的应用程序中用于创建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);

这是我的对象类

public class JsonStructure {
    String idpeople;
    String iduser;
    String idmember;
    ArrayList<String> messages = new ArrayList<String>();
    ArrayList<String> asecs = new ArrayList<String>();


    public JsonStructure() {

    }

    public String getIdpeople() {
        return idpeople;
    }

    public void setIdpeople(String idpeople) {
        this.idpeople = idpeople;
    }

    public String getIduser() {
        return iduser;
    }
    public void setIduser(String iduser) {
        this.iduser = iduser;
    }
    public String getIdmember() {
        return idmember;
    }
    public void setIdmember(String idmember) {
        this.idmember = idmember;
    }
    public ArrayList<String> getMessages() {
        return messages;
    }
    public void setMessages(ArrayList<String> messages) {
        this.messages = messages;
    }
    public ArrayList<String> getAsecs() {
        return asecs;
    }
    public void setAsecs(ArrayList<String> asecs) {
        this.asecs = asecs;
    }


}

我看起来像

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不显示只有arraylist显示给我的json

2)我是否需要为Arraylist创建单独的目标文件或为我的编码创建任何更改编码

1 个答案:

答案 0 :(得分:2)

无论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<String> messages ;
 ArrayList<String> asecs;