java.lang.IllegalArgumentException:无法识别的字段“面包”

这是我的 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 是有效的?


汪汪一只猫
浏览 444回答 2
2回答

手掌心

我认为该字段需要公开是一个简单的案例:class Foo {  public String loaf = "";  // make the field public  static boolean dog(){    return true;  }}

红颜莎娜

有几种可能的解决方案。一种是创建如前所述的公共财产MrCholo。class Foo {    public String loaf = "";}另一个,创建一个二传手。class Foo {    String loaf = "";    public void setLoaf(String loaf){        this.loaf = loaf;    }}或者最后,注释它。class Foo {    @JsonProperty    String loaf = "";}这些工作中的任何一项。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java