我正在尝试将JsonString转换为Java对象。
json对象
{
"action": "added",
"data": {
"Quote": {
"TotalDiscountsAmount": 0,
"Id": "test123"
},
"Owner": {
"Username": "00000000",
"Id": "00000000"
},
"Discount_Amount__c": 0,
"Base_List_Price__c": 574.88,
"TotalList": 574.88,
"Id": "000000",
"ExtendedTotalList": 574.88,
"BaseListPrice": 474.88
}
}
我的POJOs:
AddtocartJson.java地址
package com.product.json;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"action",
"data"
})
public class AddToCartJson {
@JsonProperty("action")
private String action;
@JsonProperty("data")
private Data data;
@JsonProperty("action")
public String getAction() {
return action;
}
@JsonProperty("action")
public void setAction(String action) {
this.action = action;
}
@JsonProperty("data")
public Data getData() {
return data;
}
@JsonProperty("data")
public void setData(Data data) {
this.data = data;
}
}
Data.java
package com.product.json;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"Quote",
"Owner",
"Discount_Amount__c",
"Base_List_Price__c",
"TotalList",
"Id",
"ExtendedTotalList",
"BaseListPrice"
})
public class Data {
@JsonProperty("Quote")
private com.product.json.Quote Quote;
@JsonProperty("Owner")
private com.product.json.Owner Owner;
@JsonProperty("Discount_Amount__c")
private Integer DiscountAmountC;
@JsonProperty("Base_List_Price__c")
private Double BaseListPriceC;
@JsonProperty("TotalList")
private Double TotalList;
@JsonProperty("Id")
private String Id;
@JsonProperty("ExtendedTotalList")
private Double ExtendedTotalList;
@JsonProperty("BaseListPrice")
private Double BaseListPrice;
@JsonProperty("Quote")
public com.product.json.Quote getQuote() {
return Quote;
}
@JsonProperty("Quote")
public void setQuote(com.product.json.Quote Quote) {
this.Quote = Quote;
}
@JsonProperty("Owner")
public com.product.json.Owner getOwner() {
return Owner;
}
@JsonProperty("Owner")
public void setOwner(com.product.json.Owner Owner) {
this.Owner = Owner;
}
@JsonProperty("Discount_Amount__c")
public Integer getDiscountAmountC() {
return DiscountAmountC;
}
@JsonProperty("Discount_Amount__c")
public void setDiscountAmountC(Integer DiscountAmountC) {
this.DiscountAmountC = DiscountAmountC;
}
@JsonProperty("Base_List_Price__c")
public Double getBaseListPriceC() {
return BaseListPriceC;
}
@JsonProperty("Base_List_Price__c")
public void setBaseListPriceC(Double BaseListPriceC) {
this.BaseListPriceC = BaseListPriceC;
}
@JsonProperty("TotalList")
public Double getTotalList() {
return TotalList;
}
@JsonProperty("TotalList")
public void setTotalList(Double TotalList) {
this.TotalList = TotalList;
}
@JsonProperty("Id")
public String getId() {
return Id;
}
@JsonProperty("Id")
public void setId(String Id) {
this.Id = Id;
}
@JsonProperty("ExtendedTotalList")
public Double getExtendedTotalList() {
return ExtendedTotalList;
}
@JsonProperty("ExtendedTotalList")
public void setExtendedTotalList(Double ExtendedTotalList) {
this.ExtendedTotalList = ExtendedTotalList;
}
@JsonProperty("BaseListPrice")
public Double getBaseListPrice() {
return BaseListPrice;
}
@JsonProperty("BaseListPrice")
public void setBaseListPrice(Double BaseListPrice) {
this.BaseListPrice = BaseListPrice;
}
}
Quote.java
package com.product.json;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"TotalDiscountsAmount",
"Id"
})
public class Quote {
@JsonProperty("TotalDiscountsAmount")
private Integer TotalDiscountsAmount;
@JsonProperty("Id")
private String Id;
@JsonProperty("TotalDiscountsAmount")
public Integer getTotalDiscountsAmount() {
return TotalDiscountsAmount;
}
@JsonProperty("TotalDiscountsAmount")
public void setTotalDiscountsAmount(Integer TotalDiscountsAmount) {
this.TotalDiscountsAmount = TotalDiscountsAmount;
}
@JsonProperty("Id")
public String getId() {
return Id;
}
@JsonProperty("Id")
public void setId(String Id) {
this.Id = Id;
}
}
当我尝试使用映射器将JSON转换为Java类时,它会抛出一个未识别的属性异常
。似乎就像即使我有一个Quote
对象,映射器也无法识别该对象。
org.codehaus.ackson.map.exc.UnrecognizedPropertyException:无法识别的字段“Quote”(Class.com.product.json.Data),在[Source:java.io.StringReader@11547748; 行:1,列:36](通过引用链:com.product.json.AddToCartJson[“data”]-
我该如何解决这个问题?
您可能希望通过使用 Jackson 的类级注释来忽略未定义的属性:
@JsonIgnoreProperties
这里的问题是OP混合了两个不同的杰克逊版本:
org.codehaus
(org.codehaus.jackson.map.exc.UnrecognizedPropertyException
显示)com.fasterxml
(在importsimport com.fasterxml.jackson.annotation.
中可见)正如 sam 在评论中指出的那样,OP 应该只使用一个版本。要么使用 2.x 进行反序列化,要么使用旧 1.9 版本中的注释。但建议使用 com.fasterxml
中的最新版本,而不是旧版本。
问题内容: 我使用杰克逊将JSON转换为Object类。 JSON: 对象类别: 码: 我的代码抛出这样的异常: 而且我不想在Test类上添加一个道具,我只是想让jackson转换Test中也存在的存在值。 问题答案: Jackson提供了几种不同的机制来配置“额外” JSON元素的处理。以下是将to 配置为not 的示例。 有关其他方法,请参见http://wiki.fasterxml.com/
我想使用Spring的RestTemplate plus Jackson来使用Web服务。我已经学习了几本教程,并且已经达到了创建DAO的目的。这是我获取所有域对象的方法: 但我的Web服务不会立即返回Station对象数组,而是以这种方式返回一个更具语义的表达式: 所以我的问题是,我不知道如何“告诉”RestTemplate在“stations”指示符之后立即解析对象列表,而不创建临时对象,这似
我目前正在尝试使用能够处理多态性的jackson实现反序列化程序,也就是说,给定这两个类: 反序列化器应该能够从json字符串推断和实例化正确的子类。 我使用自定义解串器模块,即唯一属性多态态序列化器(从 https://gist.github.com/robinhowlett/ce45e575197060b8392d)。此模块的配置如下: 该模块向用户询问动物的每个子类的唯一属性。因此,当反序列
问题内容: 我正在研究一个简单的示例,该示例用于将字符串转换回,但是我看到在Java对象上设置的属性很少,而不是所有属性。 这是我的代码: Sample.java程序如下所示: 在我的文件中输入json字符串是: 该程序的输出为: 根据我的程序,and 不应为null。我不清楚我在哪里犯错。 更新: 如果删除注释,则会出现如下异常: 这是我的pom.xml文件依赖项: 问题答案: 您在评论中说,您
当一个字段名的第二个字母大写时,杰克逊似乎有问题。 取值映射: 我使用Jackson的创建了一个Java对象。下面是一段Java代码: 我得到一条包含所有18个字段的错误消息。请注意,当大写为第二个字母时,camel大小写失败: 如果我将更改为,则该命令通过,而Jackson在上失败。 对于其他堆栈溢出文章,我已经验证了字段名和getter/setter匹配(是,是)。 如果重要的话,下面是的创建
问题内容: 我正在使用Jackson,但遇到问题,当我尝试反序列化对象时,出现以下错误: 我在属性中遇到问题: 有人可以帮我吗? 问题答案: 您不能实例化一个抽象类,杰克逊也不能。您应该为Jackson提供有关如何使用具体类型实例化MyAbstractClass的信息。
问题内容: 我有这个回应: 然后,我要基于 exercise_type 属性实例化不同的对象实例(的子类),因此我在以下位置创建此混合: 所以我创建如下 我的测试: 问题在于,由于某种原因,用作属性on 的 exercise_type 属性被映射为 null 。知道我该如何解决吗? 问题答案: 最后,我在API文档中找到了解决方案 关于类型标识符可见性的注意事项:默认情况下,类型标识符的反序列化(
我需要在序列化时动态过滤bean属性。 不是我的选择。 假设我的Bean(作为Json符号): 我想使用以下属性编写 JSON: 预期的 JSON 结果为: 最后,我将在RestController中创建一个注释(),用于Spring,如下所示: