使用GSON将JSON从serializeArray()转换为Java类

时间:2014-03-20 01:25:58

标签: java json gson jsonserializer

尝试使用Gson将JSON字符串从序列化HTML表单转换为Java类时遇到了一些麻烦。

以下是JSON示例:

[
    { "name" : "ObjectClass", "value" : "Obama" },
    { "name" : "ObjectType", "value" : "Person" },
    { "name" : "Att_1_name", "value" : "Age" }, 
    { "name" : "Att_1_value", "value" : "52" }, 
    { "name" : "Att_2_name", "value" : "Race" },
    { "name" : "Att_2_name", "value" : "African American" }
]

如您所见,它传递一个数组,然后该数组的每个元素都包含名称

我对如何设置我的Java类有点迷失,以便Gson可以转换它。还应该注意的是,数组中的元素数量是可变的(可以有用户期望的属性数量)。

我(不正确)尝试上课时是:

package com.test.objectclasses;

import java.util.ArrayList;

public class tempJSON {
    ArrayList<innerJSON> inJSON;

    public ArrayList<innerJSON> getInJSON() {
        return inJSON;
    }

    public void setInJSON(ArrayList<innerJSON> inJSON) {
        this.inJSON = inJSON;
    }

    public class innerJSON {
        private String name;
        private String value;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }
    }
}

任何想法如何解决这个问题,还是我认为这一切都错了?提前谢谢。

1 个答案:

答案 0 :(得分:0)

首先,遵循Java命名约定。您的班级名称应以大写字母开头。所以上骆驼案。

删除封闭的类tempJSON并使用Gson#fromJson(..)中的类型标记将其标记为List,因为您有一个JSON数组。

List<innerJSON> innerJSONs = gson.fromJson(yourStream, new TypeToken<List<innerJSON>>(){}.getType());

现在List将包含与JSON中显示的innerJSON个对象一样多的数据。