这是我的JUnit测试:
package general;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.unit.TestContext;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
class Foo {
String loaf = "";
static boolean dog() {
return true;
}
}
public class GeneralTest {
@Test
public void test() {
JsonObject v = new JsonObject();
v.put("loaf","box");
var k = v.mapTo(Foo.class);
System.out.println(k);
}
}
当我运行它时,出现此错误:
java.lang.IllegalArgumentException: Unrecognized field "loaf" (class general.Foo), not marked as ignorable (0 known properties: ])
at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: general.Foo["loaf"])
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3750)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:3668)
at io.vertx.core.json.JsonObject.mapTo(JsonObject.java:106)
at general.GeneralTest.test(GeneralTest.java:33)
我不知道为什么它不接受Foo.class合法?
答案 0 :(得分:3)
有一些可能的解决方案。一种是创建MrCholo
所提到的公共财产。
class Foo {
public String loaf = "";
}
另一个,创建一个setter。
class Foo {
String loaf = "";
public void setLoaf(String loaf){
this.loaf = loaf;
}
}
或者最后,对其进行注释。
class Foo {
@JsonProperty
String loaf = "";
}
其中任何一项工作。
答案 1 :(得分:0)
我认为这是一个简单的情况,该领域需要公开:
class Foo {
public String loaf = ""; // make the field public
static boolean dog(){
return true;
}
}