我有一个如下课程:
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.util.StringUtils;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
@Data
public class MyTestClass {
@JsonProperty("first")
private List<String> first = new ArrayList<>();
@JsonProperty("second")
private List<String> second = new ArrayList<>();
@JsonProperty("third")
private List<String> third = new ArrayList<>();
public static MyTestClass emptyFilter() {
return new MyTestClass();
}
@SuppressWarnings("unused") //JSR311
@Nonnull
public static MyTestClass fromString(@Nullable String jsonString) {
if (StringUtils.isEmpty(jsonString)){
return emptyFilter();
}
return JsonUtils.fromJSONString(jsonString, MyTestClass.class, false);
}
}
我的问题是关于 RESTfull调用webservice 的输入。我的请求必须有filter
参数,该参数应该引用此类。所以,我作为过滤器参数给出的内容如下:
{"MyTestClass":{"first":[],"second":[],"third":[]}}
但我总是得到这个错误:
Failed to convert value of type 'java.lang.String' to required type 'MyTestClass'
我是Spring框架的新手,我的问题可能是愚蠢的:
我知道过滤器参数应为jsonObject
,其中包含三个JsonArray
s。 jsonObject
中包含JsonArray
的主要参数的名称应该是什么。我已经使用了类名,你可以看到。那是对的吗?如果我从stackoverflow
上的其他一些问题中正确理解了这一点,那么当我使用基于Spring
编写的类时,我应该使用它。
如果不正确,我怎样才能找到应该叫什么?我只需通过查看类就可以看到jsonArray
的名称,因为它们是类的变量。但是包含所有这些数组的jsonObject
的名称呢?
从类中,我觉得该类还必须接受空字符串作为过滤器。但我也尝试过这个并没有用。我应该在哪里寻找问题?
我还应该提一下,我的工作是在一家公司,它是一个非常大的项目的一小部分,最近已经转换为Spring框架,我们正在测试一切是否再次有效。
答案 0 :(得分:1)
根元素不需要通过json中的名称引用。测试字符串应为
{"first":[],"second":[],"third":[]}