尝试使用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;
}
}
}
任何想法如何解决这个问题,还是我认为这一切都错了?提前谢谢。
答案 0 :(得分:0)
首先,遵循Java命名约定。您的班级名称应以大写字母开头。所以上骆驼案。
删除封闭的类tempJSON
并使用Gson#fromJson(..)
中的类型标记将其标记为List
,因为您有一个JSON数组。
List<innerJSON> innerJSONs = gson.fromJson(yourStream, new TypeToken<List<innerJSON>>(){}.getType());
现在List
将包含与JSON中显示的innerJSON
个对象一样多的数据。