- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 JSON
paylaod
如下:
{
"status": "ok",
"result": {
"result": [
{
"product_id": "1420-131617-82",
"sku": "1420-131617",
"display_sku": "8DD 355 100-411",
"genart_number": 82,
"name": "Bremsscheibe",
"description": null,
"additional_info_text": null,
"product_url": "https://www.autoteile5000.de/product/1420-131617-82",
"image_url": "https://static.autoteile5000.de/product-images/HLP/4625-462502682-3-255-1548045462267.jpg",
"brand": "HELLA PAGID",
"eans": [
"4082300365078"
],
"manufacturer_product_number": "8DD 355 100-411",
"data_supplier_number": "4625",
"pricehammer": false,
"buyable": true,
"bulky_good": false,
"risky_good": false,
"hazardous_good": false,
"car_specific": true,
"has_deposit": false,
"is_exchange_part": false,
"visibility_status": "active",
"deleted": false
}
]
}
}
这是我反序列化它的方法:
public List<SimpleProductDto> getProducts(ProductForm productForm) {
JsonParser jsonParser = new JsonParser();
try (InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("data/product/2210-0929-818/product.json") ) {
String text = IOUtils.toString(inputStream, StandardCharsets.UTF_8.name());
//System.out.println("print text : " + text);
//Read JSON file
JsonObject objectFromString = jsonParser.parse(text).getAsJsonObject();
// System.out.println(objectFromString.toString());
JsonObject objectFromString1 = objectFromString.getAsJsonObject("result");
// System.out.println(objectFromString.toString());
// System.out.println(objectFromString1.toString());
JsonArray jsonArray = objectFromString1.getAsJsonArray("result");
System.out.println("printing json array : " +jsonArray.toString());
ObjectMapper oMapper = new ObjectMapper();
for(JsonElement element : jsonArray){
JsonObject productObj = element.getAsJsonObject();
System.out.println("printing json object : " + productObj.toString());
SimpleproductDtoMapper productDtoList = oMapper.readValue(productObj.toString(), SimpleproductDtoMapper.class);
}
// List<SimpleproductDtoMapper> productDtoList = oMapper.readValue(jsonArray.toString(), new TypeReference<List<SimpleproductDtoMapper>>() {});
// Map<String, SimpleproductDtoMapper> items = productDtoList.stream().collect(Collectors.toMap(SimpleproductDtoMapper::getProductId, Function.identity()));
//items.forEach((k, v) -> System.out.println("Item : " + k + " Count : " + v));
//Iterate over employee array
//productList.forEach(emp -> parseProductObject((JSONObject) emp));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
这是我的POJO
:
public class SimpleproductDtoMapper {
@SerializedName("product_id")
private String productId;
private String sku;
@SerializedName("display_sku")
private String displaySku;
@SerializedName("genart_number")
private Integer genartNumber;
private String name;
private String description;
@SerializedName("additional_info_text")
private String additionalInfoText;
@SerializedName("product_url")
private String productUrl;
@SerializedName("image_url")
private String imageUrl;
private String brand;
private List<String> eans;
@SerializedName("manufacturer_product_number")
private String manufacturerProductNumber;
@SerializedName("data_supplier_number")
private String dataSupplierNumber;
private boolean pricehammer;
private boolean buyable;
@SerializedName("bulky_good")
private boolean bulkyGood;
@SerializedName("risky_good")
private boolean riskyGood;
@SerializedName("hazardous_good")
private boolean hazardousGood;
@SerializedName("car_specific")
private boolean carSpecific;
@SerializedName("has_deposit")
private boolean hasDeposit;
@SerializedName("is_exchange_part")
private boolean isExchangePart;
@SerializedName("visibility_status")
private VisibilityStatusDto visibilityStatus;
@SerializedName("deleted")
private boolean deleted;
}
我得到以下异常:
at [Source: (String)"{"product_id":"1420-131617-82","sku":"1420-131617","display_sku":"8DD 355 100-411","genart_number":82,"name":"Bremsscheibe","description":null,"additional_info_text":null,"product_url":"https://www.autoteile5000.de/product/1420-131617-82","image_url":"https://static.autoteile5000.de/product-images/HLP/4625-462502682-3-255-1548045462267.jpg","brand":"HELLA PAGID","eans":["4082300365078"],"manufacturer_product_number":"8DD 355 100-411","data_supplier_number":"4625","pricehammer":false,"buyable":tr"[truncated 174 chars]; line: 1, column: 16] (through reference chain: com.kfz24.mockingservice.mapper.SimpleproductDtoMapper["product_id"]) at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:823) at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1153) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1589) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1567) at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3004) at com.kfz24.mockingservice.service.impl.MockingProductServiceImpl.getProducts(MockingProductServiceImpl.java:49) at com.kfz24.mockingservice.controller.MockingProductController.getProducts(MockingProductController.java:29)
最佳答案
因为 @SerializedName
来自 Gson 而不是 Jackson 。Jackson 中的等效项是 @JsonProperty
。
因此将所有@SerializedName
更改为@JsonProperty
。另外,Jackson 默认情况下仅反序列化未用 @JsonProperty
标记的公共(public)字段。
所以对你来说,我建议最简单的方法是确保所有字段都用 @JsonProperty
标记(例如名称、品牌等)
关于java - 来自 Jackson 库的 UnrecognizedPropertyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54890696/
我是 JSON 的新手,我正在尝试应用最简单的 JSON 概念: https://github.com/FasterXML/jackson-databind 它简单明了,很容易理解。解释是有道理的。P
转载请注明出处: 在项目得不同环境上对接外部的服务接口,且存在不同版本间可能有字段不同得问题,遇到这种问题在使用jackson解析时,如果格式化得字符串与定义得java类不能完全对应时,就
我有一个 JSON 映射,其中包含简单数据类型(字符串)和复杂数据类型。我创建了一个结构来处理这个问题。这是: public static class PayloadData { String
嗨,我想将我的 JSON 对象存储在商店中,我想使用 Jackson mapper 来读取该对象,但是在运行程序时它会抛出 org.codehaus.jackson.map.exc.Unrecogni
我找不到以下数组 json 字符串的错误位置。我不确定我的映射是否正确。我希望有 friend 能帮助我。 谢谢... JSON 字符串值如下; [ { "PaymentRequest": {
这似乎是一个简单的实现,但不知何故对我不起作用。 public class ParentEntity { private List childFields; public List get
我有一个使用 bott 2.0.0.0 的基本 spring boot 独立可执行 jar 我认为这很简单,但谷歌不会放弃答案。 :) 我正在使用最新的稳定 jackson 版本 (2.9.4),但它
我有一个实体类: @Entity @Table(name = "meals") public class Meal extends AbstractNamedEntity implements Ser
这个问题已经有答案了: Why do I get "Failed to bounce to type" when I turn JSON from Firebase into Java objects
我有 JSON paylaod 如下: { "status": "ok", "result": { "result": [ { "product_id":
我正在尝试显示一个 userEmail() 或显示有关我们领域中某个用户的所有信息。 我正在尝试调用此方法:- @Test public void displayUser(){
我正在尝试读取存储在我的 Firebase 数据库中的值。这是数据库的样子: 网址:https://xxxx.firebaseio.com/Cohesion/Passes/Away/Arsenal 现
在使用 dropwizard 时, 我的 dropwizard 服务读取 config.yml 文件。 public void run() throws Exception { this.ru
我正在使用 Jackson API 在一组 POJO 类的帮助下将 JSON 文件解析为对象。但是当ObjectMapper到达@title字段时,出现以下UnrecognizedPropertyEx
我正在尝试从 xml 创建 java beans。下面是我的 xml: 2017-11-25 111111
我有以下 Json 和相应的 Java 类。 您能否检查一下并告诉我为什么会出现此异常? 是不是因为我又加了一个 public class CefMessagesGenerator { pri
我有与人 here 询问的完全相同的情况.我正在使用 Spring 5.1.8.RELEASE。 我在全局异常处理程序中有两个方法: @ExceptionHandler(HttpMessageNotR
我在测试类中读取 JSON 文件以查看其是否有效时收到此错误,但我不明白为什么。经过验证,JSON 文件没有任何问题。任何帮助将不胜感激。 我的测试类: public class ObjectToJs
这是导致异常的代码片段: org.springframework.web.client.RestTemplate rt .getForObject(uri, type, vars); 异常(excep
请帮助我,当我将 json 字符串转换为 java 用户定义的对象时,出现以下异常。 org.codehaus.jackson.map.exc.UnrecognizedPropertyExceptio
我是一名优秀的程序员,十分优秀!