我正在编写一个JSON接口/库,用于Bugzilla的webservice。
这可以使用注释或其他内容吗?还是要为每个这样的实例编写一个自定义反序列化程序?
我试着做了一些研究,发现了一些关于值实例化器或使用构造函数的信息,但使用构造函数不是反bean吗?我发现新特性的文档很少或难以理解。
示例:
public class Bug{
// Bug info, strings, ints, yadda yadda.
private User creator; // creator of the bug, json is like {"creator":"blahblah@email.com"}
}
public class User{
private String username;
}
//insert setter/getter.
我对一个字段使用pojo的原因是,这个用户类是由另一个具有更多字段的用户类扩展的。虽然我可以实现一个构造函数来达到这个效果,但这样做意味着我必须为所有其他子类实现相同的构造函数。我觉得有类似于@JsonValue的东西,但是对于设置(我在我的setter上尝试了JsonCreator,但仍然得到了与下面相同的错误)。
"无法从String值实例化类型[简单类型,类User]的值;没有单字符串构造函数/工厂方法"
谢谢。
您不需要使用@JsonCreator或@JsonValue或construtor,Jackson将使用javabean方法来处理OTTB:请尝试以下方法:
public class User{
private String username;
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public static void main(String[] args) throws Exception {
User u = new User();
u.setUsername("name");
ObjectMapper m = new ObjectMapper();
String userString = m.writeValueAsString(u);
System.out.println(userString);
User u1 = m.readValue(userString, User.class);
System.out.println(u1.getUsername());
}
}
使用@JsonCreator进行反序列化,使用@JsonValue进行序列化。已经测试了代码。请确保getJsonString()是公共方法。
例如:
public class User{
private String username;
@JsonValue
public String getJsonString() {
return username;
}
@JsonCreator
private static User parseJson(String jsonStr) {
User u = new User();
u.username = jsonStr;
return u;
}
public static void main(String[] args) {
User u = new User();
u.userName = "Niraj";
ObjectMapper m = new ObjectMapper();
String jsonString = m.writeValueAsString(u);
User u1 = m.readValue(jsonString, User.class);
}
}
我有以下JSON字符串: 我只想要和。我试过这样的方法: 但我得到了以下错误: 我只使用过几次JSON。有人能帮我吗? 对我来说最好的例子是这样的,我在另一个例子中做过: 可能吗? 现在我已经做到了: 我试着这样做: 然后: 但现在当我做一个Prtinout时,我会得到和以前一样的错误:
问题内容: 我有一个JSON响应,我需要将对应的JSON字符串映射到特定的Response类,是否有任何工具或框架可以做到这一点。 响应类为: Json响应字符串为{“ 0”:{“ 0”:“ Rockey”,“ 1”:“ John”}} 我将Apache CXF Framework与Jettison一起使用,因为JSON Provider还使用JAXB将数据连接到低带宽客户端。 请注意,我要将数字
我有一个非常复杂的对象。 我的目标是将问题答案集映射展平,以便将值中的所有列表合并为一个 我没有试图找出如何在Dozer中将所有这些列表合并到一个列表中,我甚至不确定它是否能够做到,而是编写了一个自定义setter。 我假设这意味着Dozer只需读取第一个对象的调查并将其放入makeFlatSurvey,但它读取调查对象上的questionAnswerGroup字段,然后遍历QuestionAns
我有课 其中field 如果使用ObjectMapper反序列化此对象 结果是这样的: 添加了转义(\),并且json字段有引号(")。如何正确摆脱这一点并制作单个JSON?像这样:
这个问题不难,我已经用自己的方法解决了,但我想听听你的意见,也许有什么方法可以让这成为一个改进的选择?Java 8-11。