我正在尝试将一个arrayList包装为Json字符串,以便将其发送到带有Gson
库的服务器,但我收到此错误The constructor JsonPrimitive(Object) is not visible
。
我该如何解决?
我感谢任何帮助。
SelectedRoute类:
public class SelectedRoute {
ArrayList<Integer> selected;
public SelectedRoute(ArrayList<Integer> selected) {
this.selected = selected;
}
public ArrayList<Integer> getSelected() {
return selected;
}
public void setSelected(ArrayList<Integer> selected) {
this.selected = selected;
}
}
SelectedRouteSerializer类:
public class SelectedRouteSerializer implements JsonSerializer<SelectedRoute>{
@Override
public JsonElement serialize(SelectedRoute select, Type arg1,
JsonSerializationContext arg2) {
JsonObject result = new JsonObject();
//The error is here.
result.add("selected", new JsonPrimitive(select.getSelected()));
return result;
}
}
答案 0 :(得分:1)
string
number
object
array
true
false
null
这些用Gson JsonPrimitve
表示,包含四个构造函数:一个用于Boolean
,一个用于String
,一个用于Number
,另一个用于Character
(一个字符String
)。 JsonPrimitive
有一个包私有构造函数,它可以接受您的ArrayList
值,但是,如果是包私有,则代码无法访问它。
Java ArrayList
不能表示为JSON原语。它应该是一个JSON数组。
您现在已经修改了自己的问题,但这里有一个直接构建JsonObject
的示例
ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(1,2,3));
JsonObject jsonObject = new JsonObject();
JsonArray jsonArray = new JsonArray();
for (Integer value : arrayList) {
jsonArray.add(new JsonPrimitive(value));
}
jsonObject.add("selected", jsonArray);