我正在研究RESTful API项目,并且正在使用JAVA完成端点的创建,因为我正在工作的环境是IBM Domino数据库。我正在使用org.json jar创建对象并提供所有响应,但是现在我将修改项目,直接与Java类一起使用,因为它变得越来越大...顺便说一下,我在嵌套方面遇到了问题Java对象。
基本上,我在另一个设置了所有必填字段的类中实例化了LabelValue,Content和ResultsBlock类,并生成一个JSONObject调用其构造函数以及新对象。当我这样做时,我有一个Null指针异常,因此系统不提供任何响应。 我认为问题出在嵌套Content对象的类Resultblock中。但是我不知道该如何处理这种情况。你能帮助我吗? 当我使用属性为通用数据类型的简单类时,当我创建Content类型的ArrayList时,我没问题,一切都很好。
提前谢谢!
p.s。我无法使用gson库,因为它会在IBM Domino服务器上造成Java策略问题。
public class LabelValue implements java.io.Serializable{
private String label;
private String value;
public void setLabel(String label) {
this.label = label;
}
public void setValue(String value) {
this.value = value;
};
}
public class Content implements java.io.Serializable{
private String title;
private String description;
private ArrayList <LabelValue> totals;
public void setTotals(ArrayList<LabelValue> totals) {
this.totals = totals;
}
public void setTitle(String title) {
this.title = title;
}
public void setDescription(String description) {
this.description = description;
}}
public class ResultsBlock implements java.io.Serializable{
private String type;
private Content content;
public void setType(String type) {
this.type = type;
}
public void setContent(Content content) {
this.content = content;
}}
in the main :
{
Content content = new Content();
content.setTitle("title");
content.setDescription("description");
content.setTotals(label);
ResultsBlock result = new ResultsBlock ();
result.setContent(content);
result.setType("result");
return new JSONObject(result);}
这是blockResult类的预期输出:
"blocks":
{
"type": "result",
"content": {
"title": "title",
"description": "description",
"totals": [
{
"label": "label",
"value": value
}
]
}
}
答案 0 :(得分:0)
如果我正确理解您的需求,建议您在无法使用GSON的情况下使用Jackson。
我试图用您提供的代码进行测试,然后将所有get方法添加到POJO类中,然后实现了以下示例:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class MainClass {
public static void main(String[] args) throws JsonProcessingException {
Content content = new Content();
content.setTitle("title");
content.setDescription("description");
ResultsBlock result = new ResultsBlock ();
result.setContent(content);
result.setType("result");
// JSONObject(result);
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(result);
System.out.println(jsonString);
}
}
它打印出以下内容:
{
"type": "result",
"content": {
"title": "title",
"description": "description",
"totals": null
}
}
现在,您可以根据需要访问JSON。 当然,我并没有考虑所有字段的简单性。
希望这会有所帮助。