Jackson2 json 转换Bean, Bean 里没有对应的值 jackson Un的解决方式

遇到这个问题时我找到了

SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable

这篇文章里说:

@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。使用方法如下:

@JsonIgnoreProperties({ "internalId", "secretKey" })

指定的字段不会被序列化和反序列化。

但是我的bean是类似这样的:

public class P {
	private C c;

	public C getC() {
		return c;
	}

	public void setC(C c) {
		this.c = c;
	}

	@Override
	public String toString() {
		return "P [c=" + c + "]";
	}
}

public class C {
	private String a;
	private String b;
	private String c;
	public String getA() {
		return a;
	}
	public void setA(String a) {
		this.a = a;
	}
	public String getB() {
		return b;
	}
	public void setB(String b) {
		this.b = b;
	}
	public String getC() {
		return c;
	}
	public void setC(String c) {
		this.c = c;
	}
	@Override
	public String toString() {
		return "C [a=" + a + ", b=" + b + ", c=" + c + "]";
	}
}

我的JSON是这样的:

{"c":{"a":"1","b":"2","c":"3","d":"4"}}

我要转换的是P类,而注解只有写到C类上才有效。而实际应用中,C类是别人提供的公共类,不可能修改。所以注解方式失败。

于是我有找到了这篇文章:

jackson json 转换Bean, Bean 里没有对应的值 jackson Unrecognized field

但是这里面说的是Jackson1,而我用的是最新版2,所以按照他的写法并不适用。

找了资料也没找到有用的,然后自己试了下,2.X版本后改成这样:

mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

这样就解决问题了!

时间: 2024-11-08 18:49:44

Jackson2 json 转换Bean, Bean 里没有对应的值 jackson Un的解决方式的相关文章

json转换实体bean、数组list

json转实体bean data=[{"xuHao":"201407140001","scaleNo":"01","qrCode":"440100100002B993","beforeWeight":15.85,"fillingWeight":30.50,"steelno":"013267","fi

atitit.XML类库选型及object 对象bean 跟json转换方案

atitit.XML类库选型及object 对象bean 跟json转换方案 1. XML类库可以分成2大类.标准的.这些类库通常接口和实现都是分开的 1 2. 常见的xml方面的方法 2 2.1. xml解析 2 2.2. bean与xml互相转换 2 2.3. json与xml的互相转换 2 3. 大名鼎鼎的 DOM  绿色环保的 SAX 默默无闻的 Digester 2 3.1. 默默无闻的 Digester:XML 的 JavaBean 化 2 4. Digester 解析 XML 3

c#里string和Json转换

这里要用到如下两个namespace: using System.Runtime.Serialization.Json;using System.Runtime.Serialization; 定义Json实体类如下: [DataContract] public class TextMessage { [DataMember(Name = "content")] public string Content { get; set; } } [DataContract] public cla

json转换成对象

在json转换成对象时,json的key会与java 类的字段一一对应.如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等. 没有映射的json key在程序结束后会用警告显示出来,告知程序员那个key值没有被映射上 import net.sf.json.JSONObject; public class MainClass { public static void main(String[] args) { TestJsonBean(); } /**

从零开始学android开发-Json转换利器Gson之实例

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. jar和源码下载地址: http://code.google.com/p/google-gson/downloads/list 实体类: public class Student { private int id; private String name; private Date birthDay; public int

Json转换利器Gson之实例二-Gson注解和GsonBuilder

有时候我们不需要把实体的所有属性都导出,只想把一部分属性导出为Json. 有时候我们的实体类会随着版本的升级而修改. 有时候我们想对输出的json默认排好格式. ... ... 请看下面的例子吧: 实体类: [java] view plaincopy import java.util.Date; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; public 

Json转换利器Gson之实例一-简单对象转化和带泛型的List转化

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. jar和源码下载地址: http://code.google.com/p/google-gson/downloads/list 实体类: [java] view plaincopy [java] view plaincopy public class Student { private int id; private Str

转载--Json转换

JSON的全称是"JavaScript Object Notation",意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交换格式,为什么没 有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据 多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据.这篇文章主要从以下几个方

iOS Json转换模型库:YYModel

iOS Json转换模型库:YYModel 其实在研究这个库之前,市面上已经有很多类似的模型序列化成JSON及反序列化库(如Mantle.MJExtension)了,推荐他只是因为他高端的性能和容错(错误对象类型赋值到属性时YYMODEL会尝试自动转换,避免Crash)以及低侵入(不需要你的MODEL类去继承某个基类.因为他是Category 方式来实现的).作者号称对比性能如下: 接下来直接写一个小例子看如何使用: 1.首先准备JSON及对象如下: {    "userName":